2016-05-13 63 views
-1

我父类动物和狗子为什么变量不调用方法不能在Upcasting中被覆盖?

public class Animal { 
public void bark() { 
    System.out.println("sua"); 
} 

}

public class Dog extends Animal { 
public void bark() { 
    System.out.println("Go go"); 
} 
public void eat(){ 
    System.out.println("an com"); 
} 

}

和类主要

public class MainDemo { 

public static void main(String[] args) { 
    Animal animal = new Dog(); 
    animal.bark(); 
    animal.eat(); 
} 

}

为什么实例动物不调用方法吃,多态性运行时

Exception in thread "main" java.lang.Error: Unresolved compilation problem: The method eat() is undefined for the type Animal

at tinhdahinh.MainDemo.main(MainDemo.java:8) 

回答

0

基类必须声明由派生类覆盖的任何方法过程中。它不必实现它们,但必须声明该方法,以便当基类的派生对象调用方法时,虚拟调度程序知道如何将调用路由到正确的位置。 在Animal类,添加此声明:

abstract void eat(); 

派生类来实现eat方法这种方法的力量。如果您不想强制他们使用方法,请提供空白执行方法:

public void eat() { } 
相关问题