Dúvida besta (acho)

3 respostas
H

Seguinte, eu ja tinha feito isso varias vezes, porém nunca fui atras p/ saber o porquê, agora deixei a preguica de lado e to perguntando aqui, entao vms lá:

  • Tenho 1 superclasse Veiculo

  • E 1 subclasse Terrestre q herda de Veiculo (claro)

  • Daí, eu ponho:

Terrestre t = new Terrestre();

ele instancia Terrestre e herda os metodos de Veciulo, confere?

  • Porém se eu fizer:
Veiculo v = new Terrestre();

ele instancia, porém, não disponibiliza os métodos da classe Terrestre, apenas os de Veiculo.

conclusao: neste segundo trecho de codigo eu pensava (pela teoria) q ele tava instanciando Terrestre, porém, na prática ele tá instanciando Veiculo a partir do construtor de Terrestre, eh isto? Se n for, esclarecam ai, flws…

3 Respostas

T

Não, ele instancia Terrestre, porque você usou “new Terrestre”.
Tanto é que eu posso fazer:

Veiculo v = new Terrestre();
((Terrestre) v).metodoDeTerrestre();

O que você na verdade está fazendo é usar uma variável do tipo Veículo, para acessar o objeto do tipo Terrestre usando apenas os métodos do tipo Veículo. Variáveis são uma coisa, objetos são outra coisa. (Em mil novecentos e bolinha, quando aprendi isso, a gente usava uma caixa de ovos e ovos. A caixa de ovos é a variável, onde você põe o ovo, que é um objeto.)

H

mas dai, eu so vo poder usar os metodos de Terrestre se eu der cast (p/ Terrestre) na variavel Veiculo, ne isto?

nandobgi

O que acontece ai hlds é que você tem uma variavel de referencial do tipo Veiculo, essa variavel de referencia conhece somente os elementos da superclasse Veiculo.

Obs: Se estou errado me corrijam por favor

Obrigado

Criado 22 de agosto de 2006
Ultima resposta 22 de ago. de 2006
Respostas 3
Participantes 3