多型的理解

2022-01-18 09:54:20 字數 1726 閱讀 1422

概念:父類引用子類物件,從而產生多種形態

前提:二者之間必須具有直接或間接的繼承關係,父類引用可指向子類物件,進而形成多型。

注意:父類引用僅可呼叫父類中所宣告的屬性和方法,不可呼叫子類獨有的屬性和方法。

多型的兩種應用場景
場景一:使用父類作為方法形參,實現多型。使方法的型別更為廣泛。

場景二:使用父類作為方法返回值實現多型,使方法可以返回不同子類物件。

public class testpolym else 

//拆箱:將父類引用中的真實子類物件轉回其本身型別

if(myvehicle instanceof car) else if (myvehicle instanceof bus) }}

/** * 這個員工類有個方法要回家

* 回家會選擇不同的交通工具,就要傳入不同的交通物件,導致耦合度高

* 但是gohome這個方法與傳入的交通工具物件是一種鬆散的關係,我選擇哪個物件都是可以的

* 這樣我們就可以選擇父類作為方法的形參,就可以選擇傳入不同的子類物件。

*/class employee

/*** 降低了耦合度

* 不然employee建立乙個類就要建立乙個傳入的引數

*/// public void gohome(car car)

/*場景二:使用父類作為返回值實現多型,使方法可以返回不同的子類物件 (員工買車新)

*/public vehicle buyvehicle(int money) else if (money >= 30)

return vehicle;

} }

//交通工具類

class vehicle

}//實體類car繼承交通工具父類

class car extends vehicle

}//實體類bus繼承交通工具父類

class bus extends vehicle

}

多型的裝箱和拆箱

向上轉型(裝箱)

父類引用中儲存真實子類物件,稱為向上轉型(即多型核心概念)。

animal a = new dog();  //小轉大
向下轉型(拆箱)

將父類引用中的真實子類物件,強轉回類本身型別,稱為向下轉型。

animal a = new dog();

dog dog = (dog)a; //大轉小

為什麼會有向下轉型?

因為我們的父類引用中明明儲存這子類物件的屬性,卻不能訪問他的屬性和方法,但是又有這種需求,此時我們就需要轉回子類真是型別,才可與呼叫子類獨有的屬性和方法。

instanceof關鍵字

向下轉型前,應判斷引用中的物件真實型別,保證轉換的真實性。

語法:父類引用 instanceof 型別

​ 返回boolean型別結果

多型的理解

1.對多型的理解 同乙個物件在不同時刻體現出來的不同狀態。簡單來說就是貓和狗都是動物,但他們又有許多不同,貓和狗是動物向下延伸的不同結果,這就是多型。2.多型的前提 a 有繼承或者實現關係。b 有方法重寫。c 有父類或者父介面引用指向子類物件。3.多型的分類 a 具體類多型 class fu cla...

多型的理解

1 同乙個物件在不同時刻體現出來的不同狀態。2 多型的前提 a 有繼承或者實現關係。b 有方法重寫。c 有父類或者父介面引用指向子類物件。多型的分類 a 具體類多型 class fu class zi extends fu fu f new zi b 抽象類多型 abstract class fu ...

多型的理解

多型 事物執行過程中存在不同的狀態 多型存在的條件 必須具有繼承關係,子類要重寫父類的方法,父類引用子類的物件 例如乙個父類animal 子類 cat 通過輸出結果可以很充分的體現了多型的三個前提 1.必須有繼承關係 cat繼承animal 2.必須重寫父類方法 子類cat重寫了父類的eat,rn,...