यह एक प्रत्यक्ष समस्या की तुलना में अधिक शैलीगत बात है। यह बताता है कि आपने कक्षा के साथ जो चल रहा है, उसके बारे में ठीक से नहीं सोचा है।
क्या static
मतलब है के बारे में सोचो :
यह चर वर्ग स्तर पर मौजूद है, यह प्रत्येक उदाहरण के लिए अलग से मौजूद नहीं है और इसका उन कक्षाओं में एक स्वतंत्र अस्तित्व नहीं है जो मुझे विस्तारित करते हैं ।
क्या protected
मतलब है के बारे में सोचो :
इस चर को इस वर्ग द्वारा देखा जा सकता है, एक ही पैकेज में कक्षाएं और कक्षाएं जो मुझे विस्तारित करती हैं ।
दो अर्थ बिल्कुल परस्पर अनन्य नहीं हैं, लेकिन यह बहुत करीब है।
एकमात्र मामला मैं देख सकता हूं कि आप दोनों को एक साथ कहां उपयोग कर सकते हैं यदि आपके पास एक अमूर्त वर्ग है जिसे विस्तारित करने के लिए डिज़ाइन किया गया था और विस्तारित वर्ग तब मूल में परिभाषित स्थिरांक का उपयोग करके व्यवहार को संशोधित कर सकता है। इस तरह की व्यवस्था से सबसे अधिक संभावना होती है, हालांकि यह बहुत ही गड़बड़ है और कक्षाओं के डिजाइन में कमजोरी को दर्शाता है।
ज्यादातर मामलों में, स्थिरांक को सार्वजनिक करना बेहतर होगा क्योंकि यह सब कुछ साफ करता है और लोगों को अधिक लचीलेपन को उप-वर्गीकृत करने की अनुमति देता है। कई मामलों में कुछ और के अलावा रचना विरासत के लिए बेहतर है, जबकि सार कक्षाएं विरासत में मजबूर करती हैं।
यह कैसे चीजों को तोड़ सकता है इसका एक उदाहरण देखने के लिए और यह समझने के लिए कि चर से मेरा क्या मतलब है एक स्वतंत्र अस्तित्व नहीं है इस उदाहरण कोड की कोशिश करें:
public class Program {
public static void main (String[] args) throws java.lang.Exception {
System.out.println(new Test2().getTest());
Test.test = "changed";
System.out.println(new Test2().getTest());
}
}
abstract class Test {
protected static String test = "test";
}
class Test2 extends Test {
public String getTest() {
return test;
}
}
आप परिणाम देखेंगे:
test
changed
इसे स्वयं आज़माएँ: https://ideone.com/KM8u8O
वर्ग नाम को अर्हता प्राप्त करने की आवश्यकता के बिना Test2
स्थैतिक सदस्य test
तक पहुंचने में सक्षम है Test
- लेकिन यह विरासत में नहीं मिलता है या अपनी प्रतिलिपि प्राप्त नहीं करता है। यह स्मृति में ठीक उसी वस्तु को देख रहा है।
final
। कक्षाओं में साझा किया जाने वाला एक स्थिर स्थिर क्षेत्र निश्चित रूप से चिंता का कारण है। एक स्थिर क्षेत्र को अद्यतन करने वाली कई कक्षाएं विश्वसनीय या आसान होने की संभावना नहीं है, खासकर जब से किसी भी संरक्षित क्षेत्र या पद्धति की उपस्थिति का अर्थ है कि कक्षा को अन्य पैकेजों में कक्षाओं द्वारा विस्तारित किया जाना है, संभवतः कक्षाएं नियंत्रण में नहीं हैं। संरक्षित क्षेत्र वाले वर्ग के लेखक।