java - Why can't my subclass access a protected variable of its superclass, when it's in a different package? -


मेरे पास एक अमूर्त वर्ग है, संबंध पैकेज में database.relation और इसका एक उपवर्ग, जुड़ें , पैकेज में database.operations संबंध में एक संरक्षित सदस्य है जिसका नाम mStructure है।

में जुड़ें :

  सार्वजनिक शामिल हों (अंतिम संबंध रिलेफ़्ट, अंतिम संबंध relraight) {super (); MRelLeft = relLeft; MRelRight = relraight; MStructure = नई लिंक्डलिस्ट & lt; हेडर & gt; (); this.copyStructure (mRelLeft.mStructure); (अंतिम हैडर हैडर: mRelRight.mStructure) के लिए {if (! MStructure.contains (हैडर)) {mStructure.add (header); }}}  

लाइनों पर

<पूर्व> this.copy संरचना (mRelLeft.mStructure);

और

  के लिए (अंतिम हैडर हैडर: mRelRight.mStructure) {  

मुझे निम्न त्रुटि मिलती है:

फ़ील्ड रिलेशन। एमस्ट्रक्चर दृश्यमान नहीं है

अगर मैं एक ही पैकेज में दोनों क्लास डालता हूं, तो यह पूरी तरह से काम करता है। क्या कोई इस मुद्दे को समझा सकता है?

यह काम करता है, लेकिन केवल आप इसे एक्सेस करने की कोशिश करते हैं

इसे बेहतर समझने के लिए इस नमूना कोड को देखें:

  // में parent.java पैकेज parentpackage; पब्लिक क्लास माता-पिता {String parentVariable = "whatever"; // define protected variable} // बच्चों में .java पैकेज childenpackage; आयात करें parentpackage.Parent; कक्षा बच्चे माता-पिता (बच्चों के साथ माता-पिता) {System.out.println (this.parentVariable); // अच्छी तरह से काम करता है; // SYSTEM.out.print (with parent.parentVariable) ;// काम नहीं करता}}  

यदि हम के साथ का उपयोग कर संकलित करने का प्रयास करते हैंपैंटपॉइंटिवयनीय हम 'मिला है:

  children.java:8: parentVariable parentpackage.Parent System.out.print (withParent.parentVariable) में पहुंच सुरक्षित है;  

यह सुलभ है, लेकिन केवल अपने स्वयं के चर पर।


Comments