2013-03-24 8 views
5

मुझे पता है कि यदि मेरे पास एक ही कक्षा का एक से अधिक उदाहरण है, तो वे सभी एक ही कक्षा चर साझा करने वाले हैं, इसलिए कक्षा के स्थिर गुण स्मृति की निश्चित मात्रा का उपयोग करेंगे चाहे कितना भी हो मेरे पास कक्षा के कई उदाहरण हैं।जावा स्टेटिक वैरिएबल और विरासत और मेमोरी

मेरा प्रश्न है: यदि मेरे पास कुछ सुपरक्लास हैं जो अपने सुपरक्लास से कुछ स्थैतिक क्षेत्र को विरासत में रखते हैं, तो क्या वे कक्षा चर साझा करेंगे या नहीं?

और यदि नहीं, तो यह सुनिश्चित करने के लिए कि वे एक ही कक्षा चर साझा करते हैं, सबसे अच्छा अभ्यास/पैटर्न क्या है?

उत्तर

15

अगर मैं उनके सुपर क्लास से कुछ स्थिर क्षेत्र इनहेरिट एक जोड़े उपवर्गों, वे वर्ग चर का हिस्सा है या नहीं होगा?

हां वे एकल क्लासलोडर में मौजूदा चल रहे एप्लिकेशन में समान कक्षा चर साझा करेंगे।
उदाहरण के लिए नीचे दिए गए कोड पर विचार करें, यह आप .. अपने उपवर्गों से प्रत्येक के द्वारा वर्ग चर के आदान-प्रदान का उचित विचार दे देंगे

class Super 
{ 
    static int i = 90; 
    public static void setI(int in) 
    { 
     i = in; 
    } 
    public static int getI() 
    { 
     return i; 
    } 
} 
class Child1 extends Super{} 
class Child2 extends Super{} 
public class ChildTest 
{ 
    public static void main(String st[]) 
    { 
     System.out.println(Child1.getI()); 
     System.out.println(Child2.getI()); 
     Super.setI(189);//value of i is changed in super class 
     System.out.println(Child1.getI());//same change is reflected for Child1 i.e 189 
     System.out.println(Child2.getI());//same change is reflected for Child2 i.e 189 
    } 
} 
6

सभी उस वर्ग या उप-वर्ग में हिस्सेदारी का एक ही स्थिर क्षेत्रों उदाहरणों किसी दिए गए वर्ग लोडर के लिए।

नोट: यदि आप एक ही कक्षा को एकाधिक कक्षा लोडर में एक से अधिक बार लोड करते हैं, तो प्रत्येक वर्ग लोडर की स्थिर फ़ील्ड की अपनी प्रति है।

0

हां सभी वर्ग पदानुक्रम (समान वर्ग और सभी बाल कक्षा के उदाहरण) एक ही स्थैतिक चर साझा करते हैं। चूंकि जावा वैश्विक चर का समर्थन नहीं करता है लेकिन आप ओओपी अवधारणाओं के उल्लंघन के बिना स्थिर चर के रूप में स्थिर चर का उपयोग करने में सक्षम हैं।

यदि आपने कक्षा में से किसी एक से स्थिर वैरिएबल का मान बदल दिया है, तो वही बदलता मान इस चर का उपयोग करने वाले सभी वर्गों में दोहराया गया है।

संबंधित मुद्दे