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)

Herança e referências

A minha dúvida é em relação às referências:

Nesse vídeo onde eu coloquei a dúvida, há um array do tipo Object, onde são guardados objetos do tipo ContaCorrente, ContaPoupanca e Cliente, mas quando se tenta acessar um método específico de cada classe não compila.

A questão é: Lá nas aulas de herança e polimorfismo, vimos que podemos criar um método que recebe um tipo genérico (polimorfismo), e que quando esse método é invocado, chama um método específico do objeto que foi passado como parâmetro. Qual a diferença entre os dois casos? Por que em um caso funciona e no outro não?

4 respostas

Oi Pércio,

Se você tem um

Object a = new Conta();

você só pode chamar os métodos de Object.

Os métodos que podemos chamar é sempre os métodos da referência (lado esquerdo).

Sim, mas lá nas aulas de herança e polimorfismo tinha um código assim:

public void registra(Funcionario f) {
          double boni = f.getBonificacao();
          // ...
}

Nesse caso é chamado o método específico do objeto que foi passado como parâmetro, seja um Gerente, ou um Administrador, ou um Designer etc, que herdam da classe Funcionario.

Uma coisa que eu me dei conta agora é que a classe Funcionario tem o método getBonificacao, então nesse caso funciona porque a referência genérica tem o método também?

Obrigado pela resposta!

solução
a classe Funcionario tem o método getBonificacao, então nesse caso funciona porque a referência genérica tem o método também?

Exatamente ^^

Valeu!