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?
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.”