Objetos

2 respostas
edymrex

Estou com uma pequena dúvida de como criar objetos de uma classe
por exemplo:

ClasseA chama = new ClasseA

aqui eu criei um objeto da ClasseA() e atribui esse objeto a váriavel de instância chama até ai tudo bem simples mais quando eu faço dessa forma
exemplo:

vamos supor que minha classe A é a superclasse da minha classe B
ou posso muito bem fazer isso:

ClasseA chama = new ClasseB();

bem isso da pra fazer mais eu gostaria que alguém me explicasse qual é
a lógica pra min criar objetos dessa forma, neste caso que eu fiz eu criei
uma variável de instância do tipo ClasseA é crei um objeto da classe do tipo ClasseB mas porque intão eu não posso acesso os métodos da classe B…?? alguém sabe me explicar porque isso acontece…?

2 Respostas

diego2005

Porque a veriável é do tipo ClasseA e o objeto do tipo ClasseB. Mas você pode acessar os métodos de ClasseB sim, mas para isso terá que fazer uma conversão:

ClasseA obj = new ClasseB(); obj.metodoClasseA(); (ClasseB(obj)).metodoClasseB();

T+

Foxlol

Vou tentar de passar um exemplo para que fique mais claro.

Existe uma superclasse Pessoa.
Uma subclasse de Empregado.

Então temos a seguinte hierarquia:

Pessoa
l
Empregado

Se vc fizer:

Pessoa pessoa = new Empregado();

Vc criou um objeto Empregado, porém a variável de referência para o mesmo é Pessoa, ou seja, vc só pode usar coisas que ela(Pessoa) pode fazer(métodos). E vc pode fazer isso porque Empregado também é Pessoa(vide hierarquia). Pois segundo ela, Empregado È UMA Pessoa.

Suponhamos que a classe Pessoa possua o metodo andar e empregado trabalhar.

Instanciando como no caso acima, a variável de referência, como eh da classe Pessoa, só pode andar.

Caso fosse:

Empregado empregado = new Empregado();

Vc poderia usar o método trabalhar. Pois agora a variável de referência, como eh da classe Empregado, ela sabe trabalhar.

Bom achu que falei de mais, espero ter ajudado.

Criado 11 de agosto de 2007
Ultima resposta 11 de ago. de 2007
Respostas 2
Participantes 3