protected, funciona com acesso direto para classes do mesmo pacote…se vc colocar em outro pacote mesmo sendo subclasse, ele nao funciona…entao vc teria que mudar seu protected para public…pelo menos aqui no meu eclipse funcionou assim…
Essa questão é pegadinha mesmo, quando se “É-UM” em java o acesso protected permite sim acessar o atributo ou método tando ou não no mesmo pacote, ou seja ele é menos restrintivo do que o default, porém o que acontece é que o método
recebe como parêmetro uma referência a classe A e neste caso não adianta B ser uma especialização de A, pois B neste momento tratará uma variável da classe A e não a si mesmo, por exemplo:
se removermos
e colocarmos
o código passa a ser compilável, mesmo que não sirva para nada pois não usamos a variável a para nada.
thinet
Pessoal uma dúvida nesse código:
p1.A <<< isso seria um nome totalmente qualificado?
Ou seja, com isso eu não precisaria fazer o import do package que a classe está inserida?
Andre_Fonseca
thinet:
Pessoal uma dúvida nesse código:
p1.A <<< isso seria um nome totalmente qualificado?
Ou seja, com isso eu não precisaria fazer o import do package que a classe está inserida?
Sim, na verdade o import é como se fosse um alias para a classe, algumas vezes para diferenciar classes de nomes iguais você pode usar p1.A e p2.A
Abs
abelgomes
corrigindo, Protected…se for subclasse, entao os atributos podem se acessados direto, mesmo que nao seja do mesmo pacote.
oque ta pegando nesse codigo é public void process(p1.A a)
pq esse objeto A é que esta “melando tudo” se vc fizer this.a ele vai funcionar…uma vez que B é subclasse de A.
ams pra vc acessar do objeto A diretamente…ou é public ou usa o metodo get…