Entendendo o modificador protegido de java
Eu tenho uma classe chamada A no pacote1 e outra classe chamada C no pacote2. A classe C estende a classe A.
A tem uma variável de instância que é declarada assim:
protected int protectedInt = 1;
Aqui está o código para a classe A
package package1;
public class A {
public int publicInt = 1;
private int privateInt = 1;
int defaultInt = 1;
protected int protectedInt = 1;
}
E aqui está o código da classe 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);
}
}
O Eclipse sublinha a última linha em C.go () e diz que "A.protectedInt" não está visível. Parece que isso entra em conflito com a definição da palavra-chave "protected", fornecida na documentação do oracle.
O modificador protected especifica que o membro só pode ser acessado em seu próprio pacote (como no pacote private) e, além disso, por uma subclasse de sua classe em outro pacote.
Oque esta acontecendo aqui?