Encarem dessa maneira:
protected eh um “default” com asteroides.
Quando voce tem algo com o modificador default, somente classes do mesmo pacote poderao acessar os membros. Logo, se voce tiver
package a;
public class Pai {
void fazFilinhos() { }
}
e
package b;
public class SuperPai extends a.Pai {
public void maisFilhos() {
super.fazFilhinhos();
}
}
o seu programa nao ira compilar, ja que fazFilhinhos() eh restrito ao package “a”. Para resolver esse tipo de problema, foi criado o protetected, com as caracteristicas que todos conhecemos.
Assim, protected eh uma versao “melhorada” de default, e, portanto, herda suas caracteristicas, o que inclui acesso a classes do mesmo pacote.
Nos primeiros betas do Java havia o “private protected”, que fazia isso que voces querem, contudo, tal possibildade de combinacao de modificadores foi removida da linguagem.
Rafael