Teste de Certificação

4 respostas
P
public class Animal
{
    public void eat()
    {
          System.out.println("Generic Animal Eating Generically");
    }
}

public class Horse extends Animal
{
    public void eat()
    {
          System.out.println("Horse eanting hay");
    }

    public void eat (String s)
    {
          System.out.println("Horse eating"+ s);
    }
}

Com base no código acima, qual será a saída (e porque) das linhas abaixo

Animal a = new Horse();
a.eat();
[/quote]

4 Respostas

cv1

“Horse eating hay”. Agora, eu pergunto: pq? :wink:

Rafael_Nunes

Pois o método foi sobreescrito da classe Animal na classe Horse. E a variável de referência “a” está fazendo referência a uma instância de Horse.

LecaDF

A saída será Horse eanting hay, por que como Horse é uma especialização de Animal, qualquer chamada do tipo:

Animal a = new Horse() a.eat(); como a classe Horse redefiniu o método eat() de Animal, a JVM sempre executara o método eat() de Horse, desde que o método não seja estático. Esta comportamento pode é uma característica do polimorfismo. Isto é chamado de Dynamic Binding. O que é Polimorfismo.

Alessandro

T

tente usar

Animal a = new Horse();

a.eat(“batata”);

Criado 9 de março de 2004
Ultima resposta 10 de mar. de 2004
Respostas 4
Participantes 5