Unterschied zwischen geschützt und ohne Zugriffsmodifizierer [geschlossen]

8

Was ist der Unterschied zwischen "protected" und "no access modifier", wenn eine Variable in Java deklariert wird? Ist es dasselbe?

    
Siyno 24.07.2013, 16:33
quelle

5 Antworten

13

Es ist nicht dasselbe.

Auf die beiden Variablen protected und no access modifier kann im selben Paket zugegriffen werden. Auf die protected Variablen kann jedoch von einer beliebigen Unterklasseninstanz zugegriffen werden ( in jedem Paket).

    
ThiepLV 24.07.2013, 16:40
quelle
6

Gehen Sie durch die Oracle-Lernprogramme .

Wenn eine Klasse keinen Modifikator hat (Standard, auch als Paket-privat bezeichnet), ist sie nur innerhalb ihres eigenen Pakets sichtbar

Der geschützte Modifikator gibt an, dass auf das Member nur innerhalb seines eigenen Pakets (wie bei package-private) und zusätzlich durch eine Unterklasse seiner Klasse in einem anderen Paket zugegriffen werden kann.

%Vor%

JLS 6.6 :

  

Wenn das Mitglied oder der Konstruktor als geschützt deklariert ist, ist der Zugriff nur zulässig, wenn eine der folgenden Bedingungen erfüllt ist:

     
  1. Der Zugriff auf das Member oder den Konstruktor erfolgt innerhalb des Pakets, das die Klasse enthält, in der das geschützte Member oder der Konstruktor deklariert ist.

  2.   
  3. Der Zugriff ist korrekt, wie in §6.6.2 beschrieben.

  4.   

wir sagen, es gibt Standardzugriff , der nur erlaubt ist, wenn der Zugriff innerhalb des Pakets erfolgt, in dem der Typ deklariert ist.

    
NINCOMPOOP 24.07.2013 16:43
quelle
4

Kein Zugriffsmodifikator ist als "Paket privat" bekannt: Alle Klassen, die in dem einen Paket definiert sind, können auf alle Dinge zugreifen, die in demselben Paket als "Paket privat" definiert sind.

Geschützt bedeutet, dass alle Klassen, die die Klasse erweitern, die die geschützte Instanz definiert, auf diese Instanz zugreifen können.

    
keelar 24.07.2013 16:36
quelle
0

Sie sind nicht gleich. Wenn kein Zugriffsmodifizierer angegeben ist, ist das Paket privat.

Weitere Details finden Sie in java docs

    
Vikas V 24.07.2013 16:35
quelle
0

Nein. Der Standardwert ist Paket-privat. Das ist etwas anders als geschützt.

Der Standardwert liegt zwischen privat und geschützt, weniger streng als privat, aber strenger als geschützt.

Weitere Einzelheiten finden Sie auf der Oracle-Seite dazu.

    
Brinnis 24.07.2013 16:36
quelle

Tags und Links