जब एक वस्तु instantiated है, केवल गैर स्थिर डेटा वास्तव में "निर्मित" है, के लिए एक संदर्भ के साथ ऑब्जेक्ट का प्रकार जिसने इसे बनाया है।
कोई भी विधि कभी भी कॉपी नहीं की जाती है।
इसे बनाए गए वर्ग में "संदर्भ" वास्तव में एक सूचक प्रेषण तालिका है। वर्ग के लिए उपलब्ध प्रत्येक विधि के लिए एक सूचक मौजूद है। पॉइंटर्स हमेशा विधि के क्रियान्वयन को "सही" (आमतौर पर ऑब्जेक्ट पेड़ में सबसे कम/सबसे विशिष्ट) इंगित करते हैं।
इस तरह यदि आपके पास किसी अन्य विधि के लिए शीर्ष-स्तरीय कॉल है, लेकिन दूसरी विधि को ओवरराइड कर दिया गया है, तो ओवरराइड विधि को कॉल किया जाएगा क्योंकि वह तालिका बिंदु में पॉइंटर इंगित करता है। इस तंत्र के कारण, शीर्ष स्तर के एक से अधिक ओवरराइड विधि को कॉल करने में अधिक समय नहीं लेना चाहिए।
पॉइंटर तालिका + सदस्य चर एक वर्ग के "इंस्टेंस" हैं।
परिवर्तनीय समस्या को पूरी तरह से अलग तंत्र, "नाम रिक्त स्थान" के साथ करना है। चर सभी "उपclassed" नहीं हैं (वे प्रेषण तालिका में नहीं जाते हैं), लेकिन सार्वजनिक चर या सुरक्षित चर स्थानीय चर द्वारा छुपाया जा सकता है। यह संकलन समय पर संकलक द्वारा किया जाता है और आपके रनटाइम ऑब्जेक्ट उदाहरणों से कोई लेना-देना नहीं है। कंपाइलर निर्धारित करता है कि आप वास्तव में कौन सी ऑब्जेक्ट चाहते हैं और उसके कोड में इसका संदर्भ प्रस्तुत करते हैं।
स्कॉइंग नियम आमतौर पर "निकटतम" चर के पक्ष में हैं। किसी भी नाम से आगे कुछ भी दूर की परिभाषा के पक्ष में अनदेखा (छायांकित) किया जाएगा।
यदि आप रुचि रखते हैं तो मेमोरी आवंटन के बारे में थोड़ा और विशिष्ट प्राप्त करने के लिए: "हेप" पर असल में सभी "उद्देश्यों" आवंटित किए जाते हैं (असल में एक अद्भुत ढेर की तुलना में आश्चर्यजनक रूप से अधिक कुशल और सुंदर कुछ, लेकिन एक ही अवधारणा।) चर हमेशा पॉइंटर्स - जावा किसी ऑब्जेक्ट की प्रतिलिपि नहीं बनायेगा, आप हमेशा उस ऑब्जेक्ट पर पॉइंटर कॉपी करते हैं। विधि पैरामीटर और स्थानीय चर के लिए परिवर्तनीय पॉइंटर आवंटन स्टैक पर किए जाते हैं, लेकिन भले ही वेरिएबल (पॉइंटर) स्टैक पर बनाए जाते हैं, फिर भी वे जिन ऑब्जेक्ट्स को इंगित करते हैं वे अभी भी ढेर पर आवंटित नहीं होते हैं।
मैं एक उदाहरण लिखने के लिए प्रेरित हूं, लेकिन यह पहले से ही बहुत लंबा है। यदि आप चाहते हैं कि मैं एक विस्तार के साथ दो वर्गों को टाइप करना चाहता हूं और कैसे उनके तरीके और डेटा उत्पन्न कोड को प्रभावित करते हैं, तो मैं ... पूछ सकता हूं।
स्रोत
2008-10-20 22:47:20
क्या आप अभी भी एक उदाहरण लिखने को तैयार हैं? यदि हां, तो कृपया ऐसा करें। – Touchstone