簡體   English   中英

(Java downcasting)在這個例子中我做錯了什么?

[英](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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM