2013-07-02 13 views
13

मैं खुद को जावा पढ़ रहा हूं, और मेरी पुस्तक में समीक्षा अभ्यासों में से एक ने "ऑब्जेक्ट" और "ऑब्जेक्ट वेरिएबल" के बीच अंतर की मांग की है।"ऑब्जेक्ट" बनाम "ऑब्जेक्ट वैरिएबल" बनाम?

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

क्या किसी को इस शब्द का अर्थ पता है?

+27

एक नई किताब खरीदें। पसंदीदा रूप से वह जो शर्तों को नहीं बनाता है। –

+2

अगर मुझे अनुमान लगाना पड़ा, ऑब्जेक्ट वैरिएबल ऑब्जेक्ट रेफरेंस उर्फ ​​एक पॉइंटर मेमोरी लोकेशन है जहां ऑब्जेक्ट रहता है। – sunrize920

+0

एक ऑब्जेक्ट वेरिएबल एक कंटेनर है जो कक्षा के विशिष्ट उदाहरण का संदर्भ रखता है। अन्यथा बस "चर" या "सदस्य" –

उत्तर

9

यह "उदाहरण चर" का एक पर्याय है:

class A { 
    static int m; // <-- class variable 
    int n;   // <-- instance variable 
    ... 
} 

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

+0

यह कहना मुश्किल है कि इनमें से कौन सा उत्तर सही है। वैसे भी नए दृष्टिकोण के लिए +1। – Pshemo

+1

मुझे लगता है कि यह शर्तों का उचित स्पष्टीकरण है। ऑब्जेक्ट वेरिएबल एक वेरिएबल है जो किसी ऑब्जेक्ट में अपनी प्रतिलिपि के रूप में होता है। – jham

+0

बस स्पष्ट करने के लिए (माफ करना मेरी पिछली टिप्पणी संपादित नहीं कर सका): @arshajii के उपरोक्त उदाहरण में कक्षा ए का कोई भी उदाहरण ऑब्जेक्ट वेरिएबल 'n' की _an_ _own_ प्रतिलिपि रखेगा। जहां वर्ग के सभी उदाहरणों के लिए 'm' का मूल्य केवल एक बार मौजूद होगा। – jham

13

मैं काट दूंगा।

ऑब्जेक्ट स्वयं उदाहरण है, जबकि ऑब्जेक्ट वैरिएबल ऑब्जेक्ट का संदर्भ है।

यहाँ एक काल्पनिक उदाहरण है:

Object o = new Object(); 
Object ref1 = o; 

उसके मामले में, वस्तु का एक उदाहरण है, लेकिन यह दो वस्तु वेरिएबल द्वारा संदर्भित है: ओ और ref1।

जब किसी ऑब्जेक्ट को किसी ऑब्जेक्ट वैरिएबल द्वारा संदर्भित नहीं किया जाता है, तो ऑब्जेक्ट कचरा एकत्र होता है।

+0

क्या आप वाकई वाकई शब्द का जिक्र कर रहे हैं? मैंने हमेशा सोचा कि यह आवृत्ति चर का पर्याय है। – arshajii

+0

इस साइट पर जाकर http://documentation.basis.com/BASISHelp/WebHelp/gridctrl/object_variables.htm आपका उत्तर सही दिख रहा है .. +1 –

+0

@VishalK वहां इस्तेमाल किया गया शब्दजाल बेसिस-विशिष्ट है। यानी बीएएसआईएस में "ऑब्जेक्ट वेरिएबल" शब्द का एक विशिष्ट, अच्छी तरह से परिभाषित अर्थ है जो सामान्य रूप से अन्य भाषाओं और ओओपी पर सार्वभौमिक रूप से लागू नहीं होता है। – arshajii

1

tl; डॉ; fmoe

मैं रेती Horstmann, बिग जावा के भीतर पाया समीक्षा प्रयोग करते हुए एक ही सवाल में आए, अर्ली ऑब्जेक्ट्स (जॉन विले & संस, 2013), 73.

के एक ऑब्जेक्ट वैरिएबल को एक चर के रूप में परिभाषित करता है (जिसका प्रकार एक वर्ग है) जो ऑब्जेक्ट के मेमोरी लोकेशन का संदर्भ संग्रहीत करता है।

Rectangle box = new Rectangle(); 
  • बॉक्स वस्तु चर जो नव instantiated आयत वस्तु की स्मृति स्थान के लिए एक संदर्भ संग्रहीत करता है।

एकाधिक ऑब्जेक्ट चर मौजूद हो सकते हैं जो किसी ऑब्जेक्ट के मेमोरी लोकेशन के समान संदर्भ संग्रहीत करते हैं।

Rectangle box = new Rectangle(5,10,20,30); 
    Rectangle box2 = box; 

एक mutator/mutagenic विधि कॉलिंग या तो चर mutates (संशोधित) वस्तु पर वस्तु (वस्तु जिस पर विधि शुरू हो जाती है को संशोधित करता है) के बाद से वस्तु चर एक ही वस्तु की स्मृति स्थान का संदर्भ

box2.translate(15, 25); 
    System.out.println(box.getY()); // 35.0 
    System.out.println(box2.getY()); // 35.0 

यदि आप The Java Tutorials, और कई अन्य स्रोतों से जानकारी के साथ की परिभाषा की तुलना करते हैं तो यह थोड़ा उलझन में पड़ता है, लेकिन मेरा मानना ​​है कि यह आपके प्रश्न का उत्तर है जब के के पुस्तक के संदर्भ में रखा गया है।

मैं इस परिप्रेक्ष्य को पसंद करता हूं => ऑब्जेक्ट रेफरेंस ऑब्जेक्ट ऑब्जेक्ट ऑब्जेक्ट रेफरेंस (ऑब्जेक्ट वेरिएबल प्रति के) में संग्रहीत होता है।जब मैं किसी ऑब्जेक्ट पर एक विधि का आह्वान करता हूं, तो मैं ऑब्जेक्ट संदर्भ निर्दिष्ट करता हूं जिसके बाद डॉट (।) ऑपरेटर होता है, उसके बाद विधि का नाम होता है।

objectReference.method(); 

एक वर्ग के सार्वजनिक इंटरफ़ेस की अनुमति देता है एक या इसके बारे में अधिक के लिए उपयोग वस्तु के क्षेत्रों (उर्फ उदाहरण चर, वस्तु चर, वर्ग सदस्य चर, गुण instantiated है, या जिम्मेदार बताते हैं ... प्रोग्रामिंग भाषा और प्रलेखन के आधार पर हैं) तो मैं, ऑब्जेक्ट संदर्भ को निर्दिष्ट करके उस तक पहुँच बिंदु (।) ऑपरेटर द्वारा पीछा किया, फ़ील्ड नाम

objectReference.fieldName; 

मैं यह क्यों पसंद करते हैं, जिसके बाद कर सकते हैं? मैं चर के रूप में चर के रूप में चर का उपयोग करने के प्रशंसक नहीं हूँ; अधिभारित semantics मेरे सरल दिमाग boggle।

0

@ फेरिस सर्वॉन: ऑब्जेक्ट वेरिएबल्स वेरिएबल्स हैं जो कोई ऑब्जेक्ट नहीं बनाते हैं लेकिन कुछ ऑब्जेक्ट का संदर्भ देते हैं .. exmp: दिनांक d1 = new date();

डी 1 एक वस्तु है।

दिनांक डी 2; d2 कोई ऑब्जेक्ट नहीं है और न ही यह किसी ऑब्जेक्ट को संदर्भित करता है लेकिन यह किसी भी प्रकार की ऑब्जेक्ट को रोक सकता है। डी 2 = डी 1; // वैध

इसलिए डी 2 एक ऑब्जेक्ट वैरिएबल है। यह याद रखना महत्वपूर्ण है कि ऑब्जेक्ट वेरिएबल्स में वास्तव में ऑब्जेक्ट्स नहीं हैं लेकिन यह किसी ऑब्जेक्ट को संदर्भित करता है।

0

मुझे कुछ ऐसा मिला जो आपकी मदद करता है। ऑब्जेक्ट, ऑब्जेक्ट वेरिएबल और ऑब्जेक्ट संदर्भ जैसे कुछ शब्द हैं।

ऑब्जेक्ट वेरिएबल और ऑब्जेक्ट रेफरेंस इस तरह के समान हैं कि ऑब्जेक्ट वेरिएबल किसी ऑब्जेक्ट के संदर्भ को संग्रहीत करता है जहां ऑब्जेक्ट संदर्भ किसी ऑब्जेक्ट के स्थान का वर्णन करता है। (आप यहाँ भ्रमित हो सकता है तो बस उन्हें एक ही मानते हैं)

एक उदाहरण ::

क्लास कार {
....
....
}

पर विचार कार ऑडीक्यू 7; // एस 1
कार ऑडीक्यू 8 = नई कार(); // एस 2

यहां एस 1 में हमने केवल ऑब्जेक्ट बनाया है। इसका मतलब यह स्मृति को संदर्भित नहीं करता है।

एस 2 में हमने एक ऑब्जेक्ट वेरिएबल/संदर्भ बनाया है जिसका अर्थ यह स्मृति स्थान को संदर्भित करता है।

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