मैं वर्तमान में सिएरा & बेट्स पुस्तक के साथ एस (ओ) सीजेपी तैयार कर रहा हूं।हम अज्ञात आंतरिक कक्षाओं के साथ अंतिम कीवर्ड का उपयोग क्यों करते हैं?
आंतरिक कक्षाओं (विधि स्थानीय या अज्ञात) के बारे में, वे कहते हैं कि हम स्थानीय चरों तक नहीं पहुंच सकते हैं क्योंकि वे ढेर पर रहते हैं और कक्षा द्वारा वापस आ सकते हैं और फिर कोशिश करने की कोशिश कर सकते हैं ढेर पर मौजूद इन चरों तक पहुंच, लेकिन विधि समाप्त होने के बाद अब मौजूद नहीं है ...
जैसा कि हम सभी जानते हैं, हम अंतिम कीवर्ड का उपयोग कर इसे बाईपास कर सकते हैं। पुस्तक में वे यही कहते हैं लेकिन वे वास्तव में यह नहीं बताते कि अंतिम कीवर्ड का क्या प्रभाव है ... जहां तक मुझे पता है, एक विधि पर अंतिम कीवर्ड का उपयोग करके स्थानीय वैरिएबल इसे ढेर पर नहीं बना देता है ... तो कक्षा एक अंतिम चर का उपयोग करने में सक्षम कैसे होगी जो अभी भी ढेर पर रहती है जबकि कोई और ढेर नहीं हो सकता ???
मुझे लगता है कि आंतरिक कक्षा के अंदर इस अंतिम स्थानीय चर के किसी प्रकार की "प्रतिलिपि" होनी चाहिए। चूंकि मान परिवर्तित नहीं हो सकता है, इसलिए इस जानकारी को डुप्लिकेट क्यों न करें ... क्या कोई इसकी पुष्टि कर सकता है या मुझे बता सकता है कि मुझे कुछ याद आ रहा है?
हां लेकिन संकलक अभी भी चर को कॉपी कर सकता है भले ही यह अंतिम नहीं था। मेरा अनुमान है कि इसे अंतिम होने की आवश्यकता है कोड को और स्पष्ट करता है कि यह नहीं बदलेगा। –
समस्या - मेरी समझ के लिए - यह है कि यदि आपको इसे अंतिम होने की आवश्यकता नहीं है, तो आपको बाहरी परिवर्तनीय परिवर्तनों को बदलने और अद्यतन करने के अधिक सावधान ट्रैक रखने की आवश्यकता है। क्या होगा यदि आपके पास आंतरिक वर्ग के कई उदाहरण हैं और उन्हें सभी को अपडेट करने की आवश्यकता है? –