[quote=digaoneves]Ah sim, mas isso que você está fazendo realmente não é possível,
você está tentando acessar o atributo de C1 em C2, mas pela variável de referência de C1.
o que você pode fazer é acessar o membro herdado. você invoca ele como se fosse seu próprio. Assim:[code]public class C2 extends C1{
public static void main(final String[] args){
C2 c2 = new C2();
c2.f();
}
}[/code] Fez sentido ?[/quote]
Concordo, inclusive resolvi assim, mas ele funciona se eu colocar tudo no mesmo pacote e, obviamente, funciona se eu colocar em f() como publica em C1.
Sim, protected é menos restrivo que default, mas acho estranho eu não poder generalizar fazendo C1 c = new C2(); em outro pacote, já que há herança. Ter que fazer typecast aí me parece forçar a barra, mas tudo bem.
quando você herda um membro protected, você tem que ver ele como se fosse um membro private seu, que você acessa diretamente. Pelo menos eu penso assim E se não me engano no livro da Kathy Sierra e do Bert Bates, eles fazem um comentário parecido com esse.
quando você herda um membro protected, você tem que ver ele como se fosse um membro private seu, que você acessa diretamente. Pelo menos eu penso assim E se não me engano no livro da Kathy Sierra e do Bert Bates, eles fazem um comentário parecido com esse.[/quote]