2017-06-07 31 views
1

我目前正在處理java旅程中的多態,並且我在Eclipse中嘗試了這些示例代碼。我只是複製代碼,但我真的很奇怪爲什麼我的代碼不能編譯。將超類擴展爲Java中的子類時出錯 - 多態

所以我得到了三個文件:Example.java,Animals.java和Dog.java。

Example.java包含的主要方法:

public class Example { 
    public static void main(String[] args) { 
     Animal myDog = new Dog(); 
    } 
} 

然後創建其它兩個類動物和狗如下

動物類

public class Animal { 

    public void makeNoise() { 
    } 

    public void eat(){ 
    } 

    public void sleep() { 
    } 

    public void roam() { 

    } 

} 

狗類

public class Dog { 

} 

我理解它的方式是我可以讓Dog成爲擴展超類動物的子類。但爲什麼我的代碼不能編譯?

我在這些代碼中丟失了什麼嗎?

+3

是的,你錯過了什麼。你從來沒有寫過'Dog'這個'Animal'(< - 提示這句話) – jhamon

+1

你錯過了'extends'部分,你應該閱讀[關於java繼承的教程](https:// docs。 oracle.com/javase/tutorial/java/IandI/subclasses.html)。 – Nathan

+0

感謝您的幫助和參考......你們真棒! :) – Arcee

回答

3

你的狗類犯規擴展動物類,所以這是無效的:

Animal myDog = new Dog(); 

您需要修改類犬爲了繼承動物類

你實現,這樣做:

public class Dog extends Animal{ 
+0

謝謝:) ..但是我剛剛從Headfirst Java Book獲得代碼時討論了關於多態性的問題,它給出了沒有「擴展」的相同示例代碼? – Arcee

+1

我聽說過這本書,但從來沒有看過它......你可以參考Stackoverflow [關於它的文檔](https://stackoverflow.com/documentation/java/87/inheritance/5790/inheritance#t= 201706070805391091503) –