2011-01-27 17 views
10

मैं इसे कैसे पूरा करूं?क्या सदस्य चर और स्थानीय विधि चर का नाम समान नाम हो सकता है?

class Test { 
    private int var1; 

    public Test(int var1) { 
     var1 = var1; //set the member variable to what was passed in 
    } 
} 

मुझे यकीन है कि एक बहुत ही स्पष्ट उत्तर है। यह अभी मुझे अभी से बच रहा है।

+0

कुछ अच्छे कोड देखें। आप देखेंगे कि वास्तव में यह ('this.x = x') सेटर्स और कन्स्ट्रक्टर के लिए उपयोग किया जाता है। एक नया नाम आविष्कार करने में कोई बात नहीं है। – maaartinus

उत्तर

19

हां, वे वही नाम साझा कर सकते हैं। हालांकि, संदर्भ के लिए उदाहरण चर, आप this उपसर्ग का उपयोग करने की जरूरत है:

public Test(int var1) { 
    this.var1 = var1; 
} 
+1

तो "यह" सामान्य रूप से वैकल्पिक है? लेकिन इस मामले में, नामों के संघर्ष के बाद मुझे इसकी आवश्यकता है? क्या मैं इसे सही ढंग से समझ रहा हूँ? – Greg

+1

@ ग्रेग - बिल्कुल। –

+2

इस मामले में, आपको इसकी आवश्यकता नहीं है * क्योंकि * नाम विवाद, आपको एक अलग (विशिष्ट) दायरे से संदर्भ प्राप्त करने के लिए JVM को बताने की आवश्यकता है। "सुपर।" समान रूप से काम करता है, लेकिन आपके द्वारा विस्तारित कक्षा से परिवर्तनीय/विधि प्राप्त करता है (यहां तक ​​कि "बड़ा" गुंजाइश)। कुछ भाषाएं "वैश्विक" भी पेश करती हैं। संशोधक टाइप करें, लेकिन जावा नहीं। – Dolph

2

हाँ, हम कर सकते हैं। लेकिन सिर्फ "कर सकते हैं"। यह अच्छा नहीं है।

+3

-1 "यह अच्छा नहीं है" सहायक नहीं है। इसके अलावा, ऐसे सामान्य पैटर्न हैं जहां यह * * अच्छा है। – Dolph

+0

मैं अपना शब्द देखूंगा। उम्मीद है कि लोग जानते हैं कि मेरे जवाब में मेरा क्या मतलब है .. –

+2

मुझे नहीं पता कि आपके उत्तर से आपका क्या मतलब है? – jzd

4

हाँ आप कर सकते हैं, लेकिन स्थानीय चर वर्ग चर को छुपाएगा।

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