Die Webseite @MadProgrammer verlinkt gibt eine anständige Erklärung:
"Der geschützte Modifizierer gibt an, dass nur auf das Element zugegriffen werden kann innerhalb seines eigenen Pakets (wie bei Paket-privat) und zusätzlich durch eine Unterklasse seiner Klasse in einem anderen Paket. "
Dies bedeutet, dass auf das geschützte Member entweder direkt über die Klasse, in der es definiert ist, oder eine Unterklasse der Klasse zugegriffen werden kann, während es sich auch innerhalb des geeigneten Pakets befindet. Es bedeutet nicht notwendigerweise, dass Sie auf das geschützte Mitglied über eine Instanz der Klasse zugreifen können, die in einer Unterklasse der Klasse erstellt wurde. Der Schwerpunkt liegt auf den beteiligten Paketen.
Versuch, auf das betreffende Mitglied von welchem Paket zuzugreifen? zuerst
Ist die (Unter) -Klasse, die das Mitglied enthält, oder seine Elternklasse, von der es das Mitglied erbt, innerhalb desselben Pakets definiert? Ja, %code% ist in %code% definiert, so dass auf das %code% -Member von %code% in %code% zugegriffen werden kann.
%Vor%Versuch, auf das betreffende Mitglied von welchem Paket zuzugreifen? Sekunde
Ist die (Unter) -Klasse, die das Mitglied enthält, oder seine Elternklasse, von der es das Mitglied erbt, innerhalb desselben Pakets definiert? Nein, %code% ist in %code% definiert, daher macht %code% das Mitglied von %code% in %code% aus nicht zugänglich.
%Vor%Versuch, auf das betreffende Mitglied von welchem Paket zuzugreifen? Sekunde
Ist die (Unter) -Klasse, die das Mitglied enthält, oder seine Elternklasse, von der es das Mitglied erbt, innerhalb desselben Pakets definiert? Ja, %code% , das in %code% definiert ist, erbt das Mitglied von %code% , sodass auf das %code% -Member von %code% in %code% zugegriffen werden kann.
Versuch, auf das betreffende Mitglied von welchem Paket zuzugreifen? zuerst
Ist die (Unter) -Klasse, die das Mitglied enthält, oder seine Elternklasse, von der es das Mitglied erbt, innerhalb desselben Pakets definiert? Ja, %code% erbt das Mitglied von %code% , das in %code% definiert ist, sodass auf das %code% -Member von %code% in %code% zugegriffen werden kann.
%Vor%Versuch, auf das betreffende Mitglied von welchem Paket zuzugreifen? zuerst
Ist die (Unter) -Klasse, die das Mitglied enthält, oder seine Elternklasse, von der es das Mitglied erbt, innerhalb desselben Pakets definiert? Ja, %code% erbt das Mitglied von %code% , welches es von %code% erbt, wo das Mitglied definiert ist ( %code% ), so dass das %code% Mitglied von %code% in %code% erreichbar ist .
Hier ist ein Diagramm, das die Zugriffsebene zeigt. Ihr Code gehört zum R (Referenz) -Fall in Convertible im Diagramm. Das heißt, auf die Referenz in der Unterklasse eines anderen Pakets darf nicht zugegriffen werden.
Geschütztes Mitglied in Java
Gleiches Paket (verhält sich wie Standard)
Es ist zugänglich mit in der gleichen Klasse, seinen untergeordneten Klassen und auch nicht untergeordneten Klassen (es verhält sich wie Standard) Sie können sogar über eine Eltern- oder Kinderreferenz auf geschützte Mitglieder zugreifen.
Äußeres Paket -
Es ist nur für die Itz-Kind-Klasse zugänglich und der wichtigste Punkt hier ist, dass die verwendete Referenz derselben Kindklasse angehören muss nur
protected bedeutet visible für andere Klassen innerhalb des gleichen Pakets. Da Second in einem anderen Paket 'Second.Second' ist, kann es nicht zuerst auf .pro () zugreifen.
Wenn Sie Second unter dem Paketnamen 'first' erstellt haben, würde es dann funktionieren.
Die Webseite @MadProgrammer verlinkt gibt eine anständige Erklärung:
"Der geschützte Modifizierer gibt an, dass nur auf das Element zugegriffen werden kann innerhalb seines eigenen Pakets (wie bei Paket-privat) und zusätzlich durch eine Unterklasse seiner Klasse in einem anderen Paket. "
Dies bedeutet, dass auf das geschützte Member entweder direkt über die Klasse, in der es definiert ist, oder eine Unterklasse der Klasse zugegriffen werden kann, während es sich auch innerhalb des geeigneten Pakets befindet. Es bedeutet nicht notwendigerweise, dass Sie auf das geschützte Mitglied über eine Instanz der Klasse zugreifen können, die in einer Unterklasse der Klasse erstellt wurde. Der Schwerpunkt liegt auf den beteiligten Paketen.
Versuch, auf das betreffende Mitglied von welchem Paket zuzugreifen? zuerst
Ist die (Unter) -Klasse, die das Mitglied enthält, oder seine Elternklasse, von der es das Mitglied erbt, innerhalb desselben Pakets definiert? Ja, First
ist in package first
definiert, so dass auf das protected
-Member von First
in package first
zugegriffen werden kann.
Versuch, auf das betreffende Mitglied von welchem Paket zuzugreifen? Sekunde
Ist die (Unter) -Klasse, die das Mitglied enthält, oder seine Elternklasse, von der es das Mitglied erbt, innerhalb desselben Pakets definiert? Nein, First
ist in package first
definiert, daher macht protected
das Mitglied von First
in package second
aus nicht zugänglich.
Versuch, auf das betreffende Mitglied von welchem Paket zuzugreifen? Sekunde
Ist die (Unter) -Klasse, die das Mitglied enthält, oder seine Elternklasse, von der es das Mitglied erbt, innerhalb desselben Pakets definiert? Ja, Second
, das in package second
definiert ist, erbt das Mitglied von First
, sodass auf das protected
-Member von Second
in package second
zugegriffen werden kann.
Versuch, auf das betreffende Mitglied von welchem Paket zuzugreifen? zuerst
Ist die (Unter) -Klasse, die das Mitglied enthält, oder seine Elternklasse, von der es das Mitglied erbt, innerhalb desselben Pakets definiert? Ja, Second
erbt das Mitglied von First
, das in package first
definiert ist, sodass auf das protected
-Member von Second
in package first
zugegriffen werden kann.
Versuch, auf das betreffende Mitglied von welchem Paket zuzugreifen? zuerst
Ist die (Unter) -Klasse, die das Mitglied enthält, oder seine Elternklasse, von der es das Mitglied erbt, innerhalb desselben Pakets definiert? Ja, Third
erbt das Mitglied von Second
, welches es von First
erbt, wo das Mitglied definiert ist ( package first
), so dass das protected
Mitglied von Third
in package first
erreichbar ist .
Geschütztes Mitglied in Java
Gleiches Paket (verhält sich wie Standard)
Es ist zugänglich mit in der gleichen Klasse, seinen untergeordneten Klassen und auch nicht untergeordneten Klassen (es verhält sich wie Standard) Sie können sogar über eine Eltern- oder Kinderreferenz auf geschützte Mitglieder zugreifen.
Äußeres Paket -
Es ist nur für die Itz-Kind-Klasse zugänglich und der wichtigste Punkt hier ist, dass die verwendete Referenz derselben Kindklasse angehören muss nur
Tags und Links java protected access-modifiers