2011-03-01 23 views
12

जावा में, यदि मैं घोषणा में संदर्भ बनाम,वस्तु जावा

MyClass obj; 

है obj "संदर्भ" या एक "वस्तु" कहा जाता है। मैं कक्षा को तत्काल नहीं कर रहा हूं।

+0

बस एक दिलचस्प तथ्य, C++ इस एक वस्तु का दृष्टांत हैं :-)। – helpermethod

उत्तर

15

ओबीजे MyClass के एक उदाहरण के लिए एक संदर्भ है।

वर्तमान में, यह संदर्भ पूर्ण है क्योंकि आपने इसे किसी भी उदाहरण के संदर्भ में असाइन नहीं किया है।

तकनीकी तौर पर MyClass, वस्तु का एक उपवर्ग होना चाहिए, ताकि यह कहना है कि obj वस्तु का एक उदाहरण के लिए एक संदर्भ के रूप में अच्छी तरह से है संभव है।

2

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

कंप्यूटर विज्ञान में, एक वस्तु किसी भी इकाई है कि एक प्रोग्रामिंग भाषा का आदेशों द्वारा हेरफेर किया जा सकता है, इस तरह के एक मूल्य, चर, समारोह, या डेटा संरचना के रूप में।

तो एक संदर्भ obj है और new MyClass() एक वस्तु के रूप में देखा जा सकता (वस्तु उन्मुख एक ही शब्द प्रोग्रामिंग, "वस्तु" के बाद के शुरूआत के साथ, एक वर्ग के एक विशेष उदाहरण के लिए संदर्भित करता है)

+1

नया MyClass() * एक ऑब्जेक्ट बनाता है लेकिन * इसके परिणाम के रूप में * उपज * संदर्भ देता है। – EJP

0

obj प्रकार MyClass का संदर्भ है। वर्तमान संदर्भ कुछ भी इंगित नहीं करता है (यानी: शून्य)।

1

कभी-कभी आप लोग कहते हैं "एक विधि है कि एक पैरामीटर के रूप एक वस्तु लेता है और डिजाइन ..."

यदि आप प्रोग्रामिंग के लिए नए हैं सुनेंगे, और जावा के साथ विशेष रूप से, इस तरह के बयानों कुछ को जन्म दे सकता उलझन। ये लोग बहुत सामान्य ओओपी शर्तों में कक्षा के उदाहरण को संदर्भित करने के लिए "ऑब्जेक्ट" शब्द का उपयोग कर रहे हैं, जरूरी नहीं कि जावा विशिष्ट।

जब हम जावा के बारे में विशिष्ट बातें और आपके पास मौजूद कोड के बारे में बात कर रहे हैं, तो यह MyClass के उदाहरण का संदर्भ है, जो शून्य है।

0

'obj' एक चर है। यह में या तो एक संदर्भ या शून्य है। यदि इसमें कोई संदर्भ है, जो किसी ऑब्जेक्ट को संदर्भित करता है।

+0

मैंने कुछ शून्य संदर्भ अपवाद देखे हैं जो उस कथन से असहमत हो सकते हैं: पी – Jeff

+0

@ जेफ: नहीं, आपने कुछ शून्य * सूचक * अपवाद देखे हैं। एक सूचक या तो एक संदर्भ या शून्य है। – EJP

+0

आप सही हैं। मैं सी # के साथ जावा को भ्रमित कर रहा हूं, जिसमें शून्य संदर्भ अपवाद हैं। – Jeff

11

संदर्भ: एक चर जो स्मृति में कुछ वस्तु को इंगित करता है। यह ढेर में संग्रहीत है जिसे वे अन्य वस्तुओं में निहित किया जा सकता है (फिर वे वास्तव में चर नहीं हैं, लेकिन फ़ील्ड), जो उन्हें ढेर पर भी रखता है।

वस्तु: गतिशील रूप से बनाई गई है वर्ग के एक उदाहरण। यह ढेर

उदाहरण में संग्रहीत है: संदर्भ हैं

MyClassI aObj,aObj1; 

aObj=new MyClass2(); 

पहली पंक्ति aObj और aObj1 पर

दूसरी पंक्ति aObj पर MyClass2 की आपत्ति को संदर्भित (नया ऑपरेटर Myclass2 और की एक वस्तु बनाता है इसके पता AObj को सौंपा गया है)।

भी बेहतर ढंग से समझने एक वर्ग कार जो एक सदस्य के रूप drivername है पर विचार करने के लिए ..

Car c1,c2; 

c1.driverName="Andrew" 

c2.driverName="Gabriel" 

System.out.println(c1.driverName);//gives Andrew 

Sytem.out.println(c2.driverName);//gives Gabriel 

c1=c2; 

c2=null; 

//gives gabriel bcuz the address of c2 is copied to reference c1. the object is not nullified because c2 is just a reference when assigning null the address that is stored on c2 in nullified not the object it points.. 
system.out.println(c1.driverName); 
0
  • जावा में, सभी वस्तुओं संदर्भ द्वारा पहुँचा रहे हैं, और आप वस्तु ही के लिए सीधी पहुँच कभी नहीं ।
  • संदर्भ: - एक चर है जिसका नाम है और किसी ऑब्जेक्ट की सामग्री तक पहुंचने के लिए उपयोग किया जा सकता है, एक संदर्भ किसी विधि को पारित किसी अन्य संदर्भ को असाइन किया जा सकता है, या किसी विधि से लौटाया जा सकता है। सभी संदर्भ समान आकार हैं, इससे कोई फर्क नहीं पड़ता कि उनका प्रकार "ऑब्जेक्ट ऑब्जेक्ट" जैसा है।

  • ऑब्जेक्ट: - एक ऐसी इकाई है जो जावा रन टाइम पर्यावरण द्वारा आवंटित स्मृति में मौजूद है, एक वस्तु ढेर पर बैठती है और इसका नाम "ऑब्जेक्ट ऑब्जेक्ट = नया ऑब्जेक्ट();" जैसा नहीं है।

  • तो MyClass obj यहां एक संदर्भ नल को संदर्भित किया गया है।

  • हम निम्नलिखित दो नियमों के साथ इस सिद्धांत को संक्षेप में प्रस्तुत कर सकते हैं:

    1. वस्तु के प्रकार निर्धारित करता है जो गुण स्मृति में वस्तु के भीतर मौजूद हैं।
    2. ऑब्जेक्ट के संदर्भ का प्रकार यह निर्धारित करता है कि जावा प्रोग्राम के लिए कौन सी विधियां और चर उपलब्ध हैं।
संबंधित मुद्दे