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 ✓