Понимание защищенного модификатора Java
У меня есть класс с именем A в package1 и другой класс с именем C в package2. Класс C расширяет класс A.
A имеет переменную экземпляра, которая объявлена так:
protected int protectedInt = 1;
Вот код для класса А
package package1;
public class A {
public int publicInt = 1;
private int privateInt = 1;
int defaultInt = 1;
protected int protectedInt = 1;
}
А вот код для класса 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 подчеркивает последнюю строку в C.go () и говорит:A.protectedInt» не видно Похоже, это противоречит определениюзащищенный» ключевое слово, приведенное в документации оракула.
Защищенный модификатор указывает, что доступ к члену возможен только в его собственном пакете (как в случае с package-private) и, кроме того, подклассом его класса в другом пакете.
Какие'здесь происходит?