[英](Java downcasting) What did I do wrong in this example?
我試着用這種方式向下傾斜:
public static void main(String[] args){
Animal a = new Animal();
((Cat)a).makePee();
}
Cat
擴展了Animal
,兩者都有相同的方法makePee()
。 如果我嘗試運行它,編譯器會顯示一條錯誤消息:
線程“main”中的異常java.lang.ClassCastException:Animal無法在Main.main(Main.java:6)中強制轉換為Cat
但是在App Lern的例子中,Java顯示與我一樣。
好吧, a
不是Cat
的實例。 如果你想將它轉發給Cat
,你需要實際創建一個Cat
(或者某個擴展Cat
類的實例,當然):
Animal a = new Cat();
但請注意,如果Animal
聲明makePee()
並且Cat
覆蓋它,則向下轉換是沒有意義的。 您可以調用a.makePee()
,並使用Cat
的實現(假設您實際創建了Cat
,如上所述)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.