多型,向上向下轉型

2022-09-07 15:03:25 字數 1533 閱讀 2675

多型的前提:繼承

物件的多型:乙個物件擁有多種形態,例如小明有學生形態,有人類形態

**中體現多型性:其實就是一句話,父類引用指向子類物件

person p = new student();

上句是向上轉型,一旦向上轉型為父類,就無法呼叫子類原本特有的內容

public class person 

}

public class student extends person 

public void test3()

}

public class test2 

}

使用多型的好處

舉例:有一父類employee員工類, n個子類講師類,助教類,教授類等

employee有抽象方法work(),每個子類都重寫work()

建立每個物件:

employee one  = new teacher();

employee two = new assiatant();

employee three = new professor();

帶來了統一性,每個物件都相當於乙個類例項化來的,而且還有其特有的work方法

無論"="右邊new的時候換成哪個子類物件,等號左邊呼叫方法,屬性都不會變化

每個物件都統一起來了,他們除了work之外都有相通的屬性方法,比如身高,體重,專業等

上下轉型

向上轉型:其實就是多型寫法,向上轉型一定是安全的,

父類名稱 物件名 = new 子類名稱();

向下轉型:還原向上轉型

子類名稱 物件名 = (子類名稱)父類物件;

animal animal = new dog();

if (animal instanceof dog)

前提:

切記:下述**錯誤

animal animal = new animal();

dog dog = (dog) animal; // 報錯

animal animal = new cat();

dog dog = (dog) animal; // 報錯

為什麼要向下轉型:當使用多型(向上轉型)後,需要呼叫子類特有的方法

轉型需要配合instanceof 使用

public static void givemeapet(animal animal)

if (animal instanceof cat)

}

構造方法用private修飾:
private static person person = new person();

public static single getinstance()

多型向上向下轉型!

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

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

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

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

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