Acesso de pacote ou protected? [RESOLVIDO]

Não compreendi muito bem a diferença entre a acessibilidade de pacote e a acessibilidade protected.

Todo membro protected tem acessibilidade de pacote, ou seja, um membro protected é acessível a suas subclasses, mas também a todos os tipos no mesmo pacote. Não é redundante ter membros protected em uma classe?

Grato, antecipadamente.

[quote=MNeto]Não compreendi muito bem a diferença entre a acessibilidade de pacote e a acessibilidade protected.

Todo membro protected tem acessibilidade de pacote, ou seja, um membro protected é acessível a suas subclasses, mas também a todos os tipos no mesmo pacote. Não é redundante ter membros protected em uma classe?

[/quote]

Isso tá errado.
Nivel de pacote acessa qq coisa no mesmo pacote. não ha herança na jogada.
Nivel protected acessa qq coisa herdada da classe mae + nivel do seu pacote.

Repare que é o pacote da filha, não da mãe. Essa é a diferença.

Protected é uma forma de extender o acesso às classes filhas. Só às filhas.

Na verdade o que ele falou está correto. Só não entendo porque acha que é redundante.

Ele acha porque provavelmente não pensou que uma classe filha pode não estar no mesmo pacote da mãe…
Nessa situação, a filha não verá os métodos package privates do pai. Os protected seriam visiveis.

Não é rendante não.
O protected certifica acesso apenas para as classes filhas do mesmo pacote.
Ou seja, se vc herdar uma classe do pacote A numa classe do pacote B, vc ainda nao tera acesso a esse metodos, atributos e etc.
Corrijam-me se estiver errado por favor.

abs

O protected é visível:
a) Para qualquer classe que esteja no mesmo pacote;
b) Para as classes filhas, em qualquer pacote;

O modificador package é visível:
a) Para qualquer classe que esteja no mesmo pacote;

Portanto, um package private não será visível nem para as filhas, caso as filhas estejam num pacote diferente.

Acho que agora entendi a diferença. Muito obrigado.

Terei que ler várias vezes a dica para assimilar.