Java向下轉型的意義詳解

2021-08-29 02:03:02 字數 1162 閱讀 5900

基礎知識多肽回顧:

1.多肽是方法的多肽,不是屬性的多肽(多肽與屬性無關)。

2.多肽的存在有三個必要條件:繼承、方法重寫、父類引用指向子類物件。

3.父類引用指向子類物件後,用該父類引用呼叫子類重寫的方法,此時多肽就出現了。

詳細舉例:

這裡有繼承,有方法重寫,但是缺少父類引用指向子類物件。

class allanimal

}class cat extends allanimal

}class fish extends allanimal

public void cando()

}

這樣就產生了多肽:父類引用指向子類物件(也是自動向上轉型)。

public static void main(string args)
自動向上轉型示例:

//自動向上轉型

allanimal a=new fish();

a.speak(); //我是魚

分析:這裡從編譯器的角度,首先你要知道編譯器是個"笨蛋"!它就認為a就是allanimal,它首先會去allanimal類中找到speak()方法,發現有這個方法,則編譯通過。(實際上a是指向的子類fish)

向上轉型的缺陷:

allanimal a=new fish();

a.cando();//報錯

按照上面所說編譯器認為a就是allanimal,那麼首先會去allanimal中找cando()方法,但是沒有找打,這個方法是子類增加的新方法,編譯則不通過。

牢牢記住一句話:無論向上向下轉型,編譯看左邊,執行看右邊。

意思就是:編譯時候左邊的物件有沒有該方法(不嚴謹),執行時候看new的物件是誰,就呼叫誰的方法

為了解決上述問題,引入強制向下轉型:

allanimal a=new fish();

a.speak();

//強制向下轉型

fish a1=(fish)a;

a1.cando();

JAVA筆記 多型的意義(向上轉型與向下轉型)

多型是物件導向的重要特性,簡單點說 乙個介面,多種實現 就是同一種事物表現出的多種形態。程式設計其實就是乙個將具體世界進行抽象化的過程,多型就是抽象化的一種體現,把一系列具體事物的共同點抽象出來,再通過這個抽象的事物,與不同的具體事物進行對話。對不同類的物件發出相同的訊息將會有不同的行為。比如,你的...

Java向上向下轉型

向上轉型 b extends a,a a new b 就是向上轉型,此時a的型別為a,指向b,可以理解為把子類物件轉換成了父類物件,即父類的引用指向子類的物件,此時a不能呼叫子類自己新建的方法和變數,但若子類中重寫了父類的某個方法,那麼在呼叫這個方法時,將會呼叫子類的這個方法。向上轉型不存在風險 向...

Java的向上轉型和向下轉型

開源共享 名詞 向上轉型 upcasting 和向下轉型 downcasting 例1 有兩個類,father父類 son子類繼承自父類father father fr new son 這樣把子類物件son 直接賦給父類引用fr叫向上轉型 upcasting 這裡fr引用指向的是son物件。son ...