Geschützter Zugriffsmodifizierer in Java

8
___ answer15944571 ___

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.

Hier sind Ihre Beispiele:

%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% 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.

Weitere Beispiele zur Verdeutlichung:

%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% , 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 .

    
___ answer15939027 ___

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.

    
___ tag123java ___ Java (nicht zu verwechseln mit JavaScript oder JScript oder JS) ist eine universelle objektorientierte Programmiersprache, die für die Verwendung in Verbindung mit der Java Virtual Machine (JVM) entwickelt wurde. "Java-Plattform" ist der Name für ein Computersystem, auf dem Tools zum Entwickeln und Ausführen von Java-Programmen installiert sind. Verwenden Sie dieses Tag für Fragen, die sich auf die Java-Programmiersprache oder Java-Plattform-Tools beziehen. ___ tag123protected ___ 'protected' ist ein Zugriffsspezifizierer in objektorientierten Sprachen. Wenn die Mitglieder einer Klasse "geschützt" sind, ist der Zugriff auf diese Mitglieder für andere Klassen eingeschränkt. ___ qstnhdr ___ Geschützter Zugriffsmodifizierer in Java ___ tag123accessmodifiers ___ Zugriffsmodifikator ist ein OOP-Konzept. Es bestimmt, welche Zugriffsebene oder Sichtbarkeit eine bestimmte Eigenschaft / Methode / Klasse hat. ___ answer46079159 ___

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

    
___ answer15939030 ___

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.

    
___
B M 11.04.2013, 00:48
quelle

4 Antworten

14

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.

Hier sind Ihre Beispiele:

%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, First ist in package first definiert, so dass auf das protected -Member von First in package first 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, First ist in package first definiert, daher macht protected das Mitglied von First in package second 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, 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.

Weitere Beispiele zur Verdeutlichung:

%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, 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.

%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, 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 .

    
Ryan 11.04.2013, 08:57
quelle
1

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.

    
Ryan 11.04.2013 00:51
quelle
0

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.

    
timzilla 11.04.2013 00:52
quelle
0

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

    
Anand 06.09.2017 15:30
quelle