Verständnis java protected Modifizierer

Habe ich eine Klasse namens A in package1 und eine weitere Klasse mit dem Namen C in package2. Class C extends Klasse A.

Einer hat eine Instanz-variable, die erklärt wird wie diese:

protected int protectedInt = 1;

Hier ist der code für die Klasse A

package package1;

public class A {

    public int publicInt = 1;
    private int privateInt = 1;
    int defaultInt = 1;
    protected int protectedInt = 1;

}

Und hier ist der code für die Klasse C:

package package2;
import package1.A;

public class C extends A{

    public void go(){
        //remember the import statement
        A a = new A();
        System.out.println(a.publicInt);
        System.out.println(a.protectedInt);

    }
}

Eclipse unterstreicht die Letzte Zeile in C. go() und sagt "A. protectedInt" ist nicht sichtbar. Es scheint, dass diese Konflikte mit der definition von "geschützt" - Schlüsselwort in der oracle-Dokumentation.

Den protected Modifizierer gibt an, dass die Mitglied-Zugriff nur innerhalb des eigenen Pakets (package-private) und zusätzlich durch eine Unterklasse Ihrer Klasse in ein anderes Paket.

Was ist denn hier Los?

InformationsquelleAutor mahela007 | 2013-09-02

Schreibe einen Kommentar