Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Conceito do Polimorfismo

Supúnhamos uma classe SerVivo e uma Pessoa. public class SerVivo { private String nome; public getNome(){ return this.nome; } } classe Pessoa extends Servivo { private double altura; public getAltura() { return this.altura; } }

Quando eu instancio uma classe assim: SerVivo sv = new Pessoa();

E tendo usar o : sv.getAltura(); Ele não funcionaria, pois a classe Mãe não possui esse método?

Mas se houver um método um método sobrescrito que exista tanto na mãe como na filha, então sempre será chamado o método da filha que é o mais especifico?

1 resposta
solução

É exatamente o que você explicou, Gabriel. O método getAltura() não funciona pois um SerVivo não tem altura. E caso exista um método na classe SerVivo e você faça a sobrescrita na classe Pessoa, vai ser utilizado o método de Pessoa.

Adicionei o método "className()", apenas para imprimir o nome da classe, às suas classes. Fiz o Override em Pessoa. Perceba que foi utilizada apenas o método da classe Pessoa.

public class SerVivo {
    private String nome;

    public String getNome(){
        return this.nome;
    }

    public void className() {
        System.out.println("SerVivo");
    }
}


package bytebank;

public class Pessoa extends SerVivo {
    private double altura;

    public double getAltura() {
        return this.altura;
    }

    @Override
    public void className() {
        System.out.println("Pessoa");
    }

}

public class Testes {
    public static void main(String[] args) {
        SerVivo sv = new Pessoa();        
        sv.className();
    }
}

Resultado:

Pessoa