2016-05-13 68 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() { } 
相關問題