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