Heim >Java >javaLernprogramm >Warum kennzeichnet Eclipse geschützten Feldzugriff in der Java-Vererbung als ungültig?

Warum kennzeichnet Eclipse geschützten Feldzugriff in der Java-Vererbung als ungültig?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-15 10:28:15871Durchsuche

Why Does Eclipse Flag Protected Field Access as Invalid in Java Inheritance?

Den geschützten Modifikator von Java verstehen

Eclipses Verwirrung über den geschützten Zugriff

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.

Problemanalyse

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.

Auflösen der Diskrepanz

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn