Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Herança Java

Se eu criar uma variável de referência do tipo da superclasse e instanciar a subclasse, eu não tennho acesso aos atributos e métodos da subclasse, apenas os da superclass. Porque acontece?

class Veiculo{
}

class Carro extends Veiculo {
}

Veiculo v1 = new Carro();
2 respostas
solução!

Oi, Rubens! Tudo bem?

Quando criamos uma referência do tipo da superclasse e a instanciamos com um objeto da subclasse, o Java vai tratar esse objeto como sendo do tipo da superclasse, o que significa que só teremos acesso aos atributos e métodos que estão definidos na superclasse, mesmo que o objeto seja de fato uma instância da subclasse.

No exemplo, criamos uma referência do tipo Veiculo e a instanciamos com um objeto do tipo Carro:

Veiculo v1 = new Carro();

Nesse caso, v1 é tratado como um Veiculo, não como um Carro. Portanto, só temos acesso aos atributos e métodos definidos na classe Veiculo. Se quisermos acessar os atributos e métodos específicos da subclasse, precisamos criar uma referência do tipo da subclasse, por exemplo:

Carro c1 = new Carro();

Agora c1 é tratado como um Carro, e tem acesso a todos os atributos e métodos definidos na classe Carro, além dos atributos e métodos herdados da classe Veiculo.

Espero ter ajudado!

Um forte abraço e bons estudos!

Caso este post tenha te ajudado, por favor, marcar como solucionado ✓

Muito obrigado Sarah, eu consegui entender o ponto em que eu estava com dúvidas, muito boa explicação muito obrigado me ajudou bastante.