Heim >Java >javaLernprogramm >Warum kennzeichnet Eclipse geschützten Feldzugriff in der Java-Vererbung als ungültig?
Bei der Untersuchung einer Klassenhierarchie markiert Eclipse fälschlicherweise den Zugriff auf ein geschütztes Feld als ungültig . Dieser offensichtliche Widerspruch ergibt sich aus einem Missverständnis der beabsichtigten Funktionalität des geschützten Modifikators.
Gemäß der Java Language Specification (JLS) ist ein geschützter Member innerhalb des Pakets der deklarierenden Klasse und unabhängig von Unterklassen dieser Klasse zugänglich des Pakets der Unterklasse. In diesem Fall deklariert Klasse A das geschützte Feld protectedInt.
Im gegebenen Beispiel erweitert Klasse C Klasse A, was bedeutet, dass C-Instanzen Zugriff auf das protectedInt-Feld von A haben sollten. Eclipse meldet jedoch, dass der Zugriff verboten ist, wenn eine Instanz von A in C verwendet wird.
Die Lösung liegt im Verständnis, dass der geschützte Zugriff auf Unterklassen der deklarierenden Klasse beschränkt ist. Daher kann auf das protectedInt-Feld von A nur von Instanzen von C oder Unterklassen von C zugegriffen werden. Dies ist ein entscheidender Unterschied, den Eclipse übersieht.
Zur Veranschaulichung: Der Zugriff auf protectedInt über eine Instanz von C würde wie beabsichtigt funktionieren:
C c = new C(); System.out.println(c.protectedInt); // Access to 'protectedInt' allowed
Letztendlich bietet der geschützte Modifikator kontrollierten Zugriff auf Felder und Methoden, sodass diese von Unterklassen geerbt werden können, während die Kapselung innerhalb dieser Klassen erhalten bleibt ein Paket.
Das obige ist der detaillierte Inhalt vonWarum kennzeichnet Eclipse geschützten Feldzugriff in der Java-Vererbung als ungültig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!