> public class Mae {
> private int x;
> protected int y;
> }
>
> public class Filha extends Mae {
> // A FILHA HERDA O ATRIBUTO PRIVADO "X" E O ATRIBUTO PROTEGIDO "Y"
> public Filha() {
> x = 50; // PERFEITAMENTE CORRETO
> y = 100; // PERFEITAMENTE CORRETO
> }
> }
Acho que houve um pequeno engano no seu exemplo.
A classe Filha nao vai nem compilar.
A linha
x = 50;
vai gerar um erro, pois um atributo "private" eh privado mesmo, nem classes filhas
podem ter acesso a esses atributos (ou mothods, se fosse o caso).
Em C++ existe o conceito de funcao/classe amiga, mas nada parecido existe em Java
(ainda bem).
No exemplo, para poder escrever em X, apenas coloque assessors e pronto, o que eh
muito mais OO.
public class Mae {
private int x;
protected int y;
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
}
public class Filha extends Mae {
// A FILHA HERDA O ATRIBUTO PRIVADO "X" E O ATRIBUTO PROTEGIDO "Y"
public Filha() {
setX(50); // PERFEITAMENTE CORRETO porque "setX" eh public
//ou
super.setX(50); // que eh ainda mais claro
y = 100; // PERFEITAMENTE CORRETO porque "y" eh protected
}
}
A classe filha herda o atributo "x", mas not tem direito de escrita ou leitura a esse
valor. Ou seja, a variavel existe, ocupa espaco na memoria, mas nao pode ser
manipulado por methodos das classes filhas.
No livro do Flanagan, Java in a nut shell, 2nd edicao, pg. 73 tem um quadro bem claro
dos metodos de acesso.
visivel para: | public | protected | package | private
A mesma classe | yes | yes | yes | yes
Classes no mesmo package | yes | yes | yes | no
subclasses em packages diferentes | yes | yes | no | no
non-subclass, e differente packages| yes | no | no | no
De plantao no feriadao, escritorio vazio, e muito tempo para escrever emails.... :-)
------------------------------ LISTA SOUJAVA ----------------------------
http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP
dúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED]
-------------------------------------------------------------------------