Considere as classes abaixo:
class Animal {
public void emitirsom() {
System.out.println(O animal faz um som.);
}
}
class Cachorro extends Animal {
@Override
public void emitirSom() { System.out.println(O cachorro está latindo.); } }
O que acontece quando chamamos o método emitirsom em um objeto da classe Cachorro?

Passo 1

Vamos dar uma olhada no que a questão está pedindo. Temos duas classes em Java: Animal e Cachorro, onde Cachorro estende Animal. Ambas têm um método chamado emitirsom. O conteúdo da matéria aqui é herança e sobreposição de métodos em programação orientada a objetos. Para resolver, vamos precisar entender como o Java decide qual método chamar quando temos uma classe filha que sobrescreve um método da classe pai.

Passo 2

Primeiro, a classe Animal tem um método emitirsom() que imprime “O animal faz um som.”

Passo 3

A classe Cachorro estende Animal e utiliza a anotação @Override para sobrescrever o método emitirSom(), fazendo com que ele imprima “O cachorro está latindo.”

Passo 4

Quando criamos um objeto da classe Cachorro e chamamos o método emitirsom(), o Java verifica se a classe Cachorro tem uma implementação desse método.

Passo 5

Como Cachorro sobrescreveu o método emitirsom(), o Java usará a versão da classe Cachorro, não a da classe Animal.

Resposta

Ao chamar o método emitirsom em um objeto da classe Cachorro, será impresso: “O cachorro está latindo.”

Exercícios relacionados