2011-06-02 17 views
11

को सही किया गया था, मैं सोच रहा था कि क्या हुआ अगर मैं अपनी सभी गतिविधियों के साथ मूल गतिविधि ऑब्जेक्ट को उस सबक्लास के रूप में परिभाषित करता हूं। फिर मैं बेस क्लास में स्थिर चर घोषित करता हूं, क्या सभी उप-वर्ग समान स्थिर का उपयोग करेंगे या प्रति सबक्लास होगा।कई अलग-अलग उप-वर्गों में स्थिर चर -

उदाहरण के लिए। मेरे आधार वर्ग:

public class MyBaseActivity extends Activity{ 

    static int myStatic; 

    ... 
    .... 

} 

तब:

public class MyActivity1 extends MyBaseActivity { 


    private void someMethod1(){ 
     myStatic = 1; 
    } 

    ... 
    .... 

} 

और

public class MyActivity1 extends MyBaseActivity { 

    private void someMethod2(){ 
      if (myStatic == 1) 
      doSomething(); 
    } 

    ... 
    .... 

} 

अगर मैं अब MyActivity1 शुरू करने और इसे "myStatic" में एक मूल्य तय करता है। यह तब निकलता है और फिर मैं MyActivity2 शुरू करता हूं - क्या मुझे अभी भी पहली गतिविधि द्वारा निर्धारित मूल्य होना चाहिए? उपरोक्त उदाहरण में, क्या "if" कथन सत्य या गलत होगा?

मुझे पता है कि अगर मैं एक से अधिक बार गतिविधि 1 को तुरंत चालू करता हूं तो स्पष्ट रूप से मुझे वही स्थैतिक चर मिलेगा। हालांकि, यहां मैं हर बार एक अलग सबक्लास चालू कर रहा हूं।

मुझे लगता है कि यह मेरे साथ हो रहा है लेकिन यह सुनिश्चित करना चाहते हैं।

उत्तर

11

स्टेटिक स्थिर है। वे एक ही वस्तु का संदर्भ देंगे।

4

यदि अब मैं MyActivity1 शुरू करता हूं और यह "myStatic" में एक मान सेट करता है। यह से बाहर निकलता है और फिर मैं MyActivity2 शुरू करता हूं - होना चाहिए मेरे पास अभी भी पहली गतिविधि द्वारा निर्धारित मान है? उपर्युक्त उदाहरण में, "if" कथन सत्य होगा या झूठा होगा?

सभी सबक्लास उसी static कक्षा उदाहरण साझा करेंगे। इसलिए if कथन सत्य है

5

स्टेटिक चर कक्षा ऑब्जेक्ट से संबंधित हैं, उदाहरण नहीं। केवल एक वर्ग वस्तु है (उस वर्ग के लिए), इसलिए स्थैतिक चर का केवल एक उदाहरण है, इसलिए "हाँ वे सभी एक ही वैरिएबल देखते हैं"।

उप-वर्गों में चर यातायात की दृश्यता है यदि यह संरक्षित या सार्वजनिक है।

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