moçada, estudando para a certificação java me deparei com essa questao no livro …
public class TestAnimals{
public static void main (String [] args) {
Animal a = new Animal();
Animal b = new Horse();//Animal ref. but a horse object
a.eat(); //Runs the Animal Version of eat()
b.eat(); //Runs the Horse Version of eat()
}
}
class Animal{
public void eat(){
System.out.println("Generic Animal eating generically");
}
}
class Horse extends Animal{
public void eat() {
System.out.println("horse eating hay, oats and horse treats");
}
public void buck(){}
}
ate ai tudo bem … sei que Animal b = new Horse() é um objeto Horse utilizando uma referencia da classe Animal, e tal…
mas a pergunta é a seguinte …
nessa parte …
Animal a = new Animal();
a.eat() ;
vai chamar o metodo eat() do objeto Animal e
Animal b = new Animal();
b.eat();
vai chamar o metodo eat() do objeto Horse…
mas pq??
nao seria mais facil fazer isso…
Horse b = new Horse();
b.eat();
qual a diferençca de um para o outro? isso que nao entendo, sei como funciona e tudo, mas nao entendo o pq…
alguem me explica? :oops: :oops: :oops:
