मैं जानता हूँ कि इस सवाल का अब लगभग तीन साल पुराना है, लेकिन मुझे लगता है कि सवाल का एक हिस्सा अभी भी उत्तर नहीं मिलता है:
और: इसका मतलब यह है कि वर्ग बी है नहीं रह गया है निजी चलने के समय पर?
कार्लोस Heubergers skaffmans जवाब पर टिप्पणी पता चलता है, वर्ग B
अभी भी private
पैकेज में अन्य वर्गों के लिए है।
वह शायद जावा प्रोग्रामिंग भाषा के लिए सही है, यानी किसी अन्य वर्ग से कक्षा B
को संदर्भित करना संभव नहीं है। प्रतिबिंब का उपयोग किए बिना कम से कम नहीं (जिसके साथ निजी वर्ग के सदस्यों को बाहर से भी पहुंचा जा सकता है), लेकिन यह एक और मुद्दा है।
लेकिन जैसा कि JVM में एक आंतरिक वर्ग (स्काफमैन राज्यों के रूप में) की कोई अवधारणा नहीं है, मैंने खुद से पूछा कि कैसे "केवल एक वर्ग द्वारा सुलभ" दृश्यता बाइटकोड स्तर पर महसूस की जाती है। उत्तर: यह बिल्कुल एहसास नहीं हुआ है, जेवीएम के लिए आंतरिक वर्ग सामान्य पैकेज निजी वर्ग की तरह दिखता है। यह है, अगर आप अपने लिए बाइटकोड लिखते हैं (या कंपाइलर द्वारा जेनरेट किए गए एक को संशोधित करते हैं) तो आप समस्याओं के बिना कक्षा B
तक पहुंच सकते हैं।
आप उसी पैकेज में सभी कक्षाओं के सभी सिंथेटिक एक्सेसर विधियों तक भी पहुंच सकते हैं। इसलिए यदि आप की विधि में कक्षा A
के किसी निजी क्षेत्र में मान निर्दिष्ट करते हैं, तो डिफ़ॉल्ट रूप से एक सिंथेटिक एक्सेसर विधि (यानी पैकेज निजी) दृश्यता A
(access$000
जैसी कुछ नाम) में उत्पन्न होती है जो आपके लिए मान निर्धारित करती है। इस विधि को केवल कक्षा B
से बुलाया जाना चाहिए (और वास्तव में इसे केवल जावा भाषा का उपयोग करके ही कहा जा सकता है)।लेकिन जेवीएम के दृष्टिकोण से, यह किसी अन्य के रूप में सिर्फ एक विधि है और इसे किसी भी वर्ग द्वारा बुलाया जा सकता है।
तो, सवाल का जवाब देने:
- देखने के जावा भाषा की दृष्टि से, वर्ग
B
है और निजी रहता है।
- जेवीएम के दृष्टिकोण से, कक्षा
B
(या बेहतर: कक्षा A$B
) निजी नहीं है।
ठीक है, मैं इसे देखता हूं। मेरे लिए इसका मतलब है कि मैं उदाहरण के समान आंतरिक वर्गों के उपयोग से बचूंगा, यह केवल भ्रम पैदा कर सकता है। – Gerard
मैं आपको परेशान नहीं होने दूंगा। उस विशेष कंपाइलर चेतावनी किसी के लिए वास्तव में बहुत अधिक उपयोग नहीं है, सिंथेटिक विधियों का उपयोग आंतरिक कक्षाओं के साथ हर समय किया जाता है, और इसका कोई महत्वपूर्ण प्रभाव नहीं पड़ता है। – skaffman
सिंथेटिक विधियों IMHO भाषा के लिए एक अनावश्यक अतिरिक्त थे। बस "निजी" सदस्यों (जो संकलक हुड के नीचे करता है) के लिए पैकेज स्कोप का उपयोग करना एक संतोषजनक समाधान था। – finnw