Sim
cara,
eu
realmente não acho que isso seja um defeito (foi uma decisão (estranha) de
projeto da equipe que criou o Java), mas quando vou ensinar aos meus alunos o
conceito de "membros protegidos" sem eles usarem pacotes, fica sem
sentido.
A
definição em Orientação a Objetos (nada a ver com Java) é que um membro
protegido só pode ser acessado pela classe que o declarou ou uma de suas
subclasse.
Em
Java, isso só ocorre quando você agrupar as classes dentro de um pacote. Se você
não usar pacotes, o modificador protected se comporta igual ao public. (porque
Java considera todas as classes em um mesmo "pacote padrão" se um pacote não for
declarado explicitamente)
Lembra
que "pacotes" é uma técnica adotada pelo Java mas que não é definida em
Orientação a Objetos.
É isso
aí, não precisa ficar defendendo o Java, melhor é discutir o comportamento da
linguagem, buscando aprender mais com a opinião de todos.
E não
precisa ficar citando os criadores do Java :^) Se as tuas opiniões forem
espertas, elas valem tanto quanto a deles :^))
Um
abraço,
Felipe
Gaúcho