Olá pessoal , estou precisando de uma ajudinha… =)
Estou estudando modificadores de acesso…e pintou uma questão que fiquei em dúvida…
Eu tenho uma classe X1 publica que possui um metodo “protected”… em uma package “A”.
Na mesma package “A” , eu tenho uma classe X11 que estende a classe X1 e herda naturalmente o método protected.
A minha dúvida e a seguinte,estou estudando pelo livro da Kathy Sierra…e no capitulo de modificadores ela fala:
“Quando a subclasse externa ao pacote herdar o membro protegido , esse membro (como foi herdado pela subclasse)se tornará privado para qualquer código externo a ela.”
Internamente (mesma package), não haverá esse problema e tanto uma instancia(referencia) , quanto uma subclasse poderão acessar o membro.
Agora conforma a kathy disse…se a subclasse for externa ao pacote , esse membro protected se tornará “privado” para qualquer código.
Então criei este dito “código externo”…
Naturalmente o membro não poderia ser acessado através de uma “referencia” devido as restrições do modificador…OK…
mas e porque que se eu …neste meu código externo…(outra classe qualquer em package “B” )…”herdar” a classe (A.X11)que herdou o método “protected” de sua superclasse (A.X1), eu consigo acessar o método…que teoricamente deveria ser “privado”?
E ate aonde sei…métodos privados não são herdados…
O que eu não estou vendo…ou o que estou pensando errado??
Valeu!!
Obrigado.
Já trabalho um tempinho com java e parece que sempre to aprendendo. Exceoto por esses error que vcs tao falando ( realmente, qqer livro traduzido fica uma bosta ). Como disse o leo: sempre que tiver duvida, escreva o codigo. Digo mais: sempre escreva o codigo qdo possivel (rs)
, mas é isso mesmo. Quando tiver esse tipo de dúvida o melhor mesmo é escrever pequenos trechos de código e tentar compilar e rodar, o que ainda por cima é uma excelente maneira de fixar na memória o conceito testado.