多型之向下轉型(強制轉型)

2022-06-08 17:57:15 字數 1676 閱讀 5539

多型的一種表現,子類引用指向父類物件,稱為向下轉型。向下轉型是強制轉換,因為子類可能有自定義的屬性和方法,所以父類物件向子類型別轉換的時候,需要借助外力,即強制轉換。

我們在向上轉型的時候,舉了乙個印表機的例子,因為是同一臺印表機,只是列印的條件不同,呼叫的都是列印方法。但是我們生活中還有別的,條件不同,而導致結果不同的例子;

乙個小朋友,養了乙隻貓貓,也養了乙隻狗狗,他想要和它們玩不同的遊戲,,和貓貓玩貓捉老鼠的遊戲,和狗狗呢,則玩扔接飛盤的遊戲。這時候就不同於同一臺印表機,而是分別需要貓貓和狗狗了。

向下轉型的前提也是有繼承關係。

我們來看看這個要怎麼實現:

pet類:

package com.dh.polymorphic;

public class pet

cat類:有乙個自己獨有的貓抓老鼠遊戲的方法

package com.dh.polymorphic;

public class cat extends pet

}

dog類:有乙個自己獨有的扔接飛盤遊戲的方法

package com.dh.polymorphic;

public class dog extends pet

}

主人測試類:直接將子類型別引用指向父類型別的話,會報錯,提示讓你進行型別轉換

我們現在強制轉換,並執行一下:

可以發現丟擲異常了,說cat類不能向pet類轉換,這是因為這是不安全的向下轉型,編譯不報錯但是執行會報錯。我們需要進行安全的向下轉型,安全的向下轉型是先把子類物件向上轉型為父類,再將該父類強制轉換為子類。

然後它們可以呼叫各自的方法

package com.dh.polymorphic;

public class master

}

不過這樣玩就沒意思了,還不如直接new子類物件呢,我們要的是通過master主人來控制和誰玩遊戲

我們在master類中書寫乙個控制的方法,父類pet為引數(這一步實際上是父類為引數的向上轉型)

package com.dh.polymorphic;

public class master

//引數為狗類物件的向上轉型

這樣就實現了通過master來控制是和貓貓玩貓抓老鼠的遊戲還是和狗狗玩接飛盤的遊戲了。

本人水平有限,若有不足和錯誤,望補充和糾正~

多型,向上轉型和向下轉型

參考 1.向上轉型 father father new son father可以呼叫son類中重寫父類的方法,但不能呼叫son類中其它方法 優點 方法的形參是父類物件 呼叫方法時,傳入的實參是子類物件,方法中的父類形參物件卻可以訪問子類中重寫父類的方法 缺點 父類還是不能訪問子類自己的方法 2.向下...

多型,向上轉型和向下轉型

package zuoye 多型 多型指的是同乙個方法呼叫,由於物件不同可能會有不同的行為。現實生活中,同乙個方法,具體實現會完全不同 多型的要點 1 多型是方法的多型,不是屬性的多型 多型與屬性無關 2 多型的存在要有三個必要條件 繼承,方法重寫,父類引用指向子類物件。3 父類引用指向子類物件後,...

多型向上向下轉型!

public abstract class animal public class cat extends animal void catchmouse 特有方法!public class dog extends animal void watchhouse 其實前面已經有所涉及,具體來說 以動物為...