Heim >Java >javaLernprogramm >Warum kann ich von einem anderen Paket aus nicht auf ein geschütztes Mitglied in einer Java-Unterklasse zugreifen?

Warum kann ich von einem anderen Paket aus nicht auf ein geschütztes Mitglied in einer Java-Unterklasse zugreifen?

Linda Hamilton
Linda HamiltonOriginal
2024-12-10 04:47:12848Durchsuche

Why Can't I Access a Protected Member in a Java Subclass From Another Package?

Den geschützten Modifikator von Java verstehen

Problem:

Betrachten Sie zwei Klassen, A und C, wobei C A erweitert. Angenommen A deklariert eine Instanzvariable als protected int protectedInt = 1. Trotz der Erwartung, dass geschützte Mitglieder innerhalb von Unterklassen in anderen Paketen zugänglich sein sollten, bietet Eclipse kennzeichnet den Zugriff auf protectedInt in Klasse C als nicht sichtbar.

Antwort:

Der Java-Modifikator protected ermöglicht den Zugriff auf ein Mitglied innerhalb seines eigenen Pakets und durch Unterklassen, jedoch nur wenn der Zugriff über eine Instanz der Unterklasse erfolgt. Dies liegt daran, dass der geschützte Zugriff auf den Unterklassentyp beschränkt ist und nicht auf die Klasse, in der das geschützte Mitglied deklariert ist.

Gemäß der Java Language Specification (JLS) ist „der Zugriff nur innerhalb des Hauptteils einer Unterklasse zulässig.“ S von C.“ Dies bedeutet, dass, obwohl C A erweitert, der direkte Zugriff auf protectedInt von einer Instanz von A aus nicht zulässig ist.

Lösung:

Um auf geschützte Mitglieder in einer Unterklasse zuzugreifen , muss der Unterklassentyp verwendet werden. Beispielsweise wäre der folgende Code gültig:

C c = new C();
System.out.println(c.protectedInt);

In diesem Fall erfolgt der Zugriff über eine Instanz der Unterklasse (C), sodass das geschützte Mitglied sichtbar ist.

Das obige ist der detaillierte Inhalt vonWarum kann ich von einem anderen Paket aus nicht auf ein geschütztes Mitglied in einer Java-Unterklasse zugreifen?. 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