所以說我有3類,測試儀,水果(父)和蘋果(子類)嘗試使用子類的方法,但它是不是讓我
我已經寫在蘋果的新方法(它擴展果) 。該方法的:
public String getAppleColor()
現在,在測試說我已經創建了10水果
Fruit fruitArray = new Fruit[10]
的陣列,說我讓他們中的一個
fruitArray[3] = new Apple()
這是很好的,因爲蘋果也是類型的水果。不過,我希望到陣列的這一特定元素上使用我的getAppleColor():
String appleColor = fruitArray[3].getAppleColor();
爲什麼這是不工作?當我在eclipse中查看fruitArray [3]中的可用方法時,我的Apple方法都沒有顯示,但是我將fruitArray [3]設置爲Apple?
這是因爲Java是一種靜態類型的語言。您可能習慣於像大多數腳本語言一樣動態輸入語言。您只能調用編譯時已知的方法來成爲類型的一部分。您可以使用強制轉換表達式來覆蓋變量的靜態類型。 (對於你的問題*解決方案*,請參閱下面的答案)有關更多信息:http://stackoverflow.com/questions/125367/dynamic-type-languages-versus-static-type-languages –
如果您已經知道'fruitArray [3]'是一個蘋果,你不知道顏色嗎?換句話說,爲什麼假定'fruitArray [3]'是一個蘋果是有意義的,但用''Red'替換對'fruitArray [3] .getAppleColor()'的調用是沒有意義的,或者'「綠色」'或什麼的? – DaoWen