多型:事物執行過程中存在不同的狀態
多型存在的條件:必須具有繼承關係,子類要重寫父類的方法,父類引用子類的物件
例如乙個父類animal ,子類 cat
通過輸出結果可以很充分的體現了多型的三個前提
1.必須有繼承關係
cat繼承animal
2.必須重寫父類方法
子類cat重寫了父類的eat,rn,sleep方法
3.父類引用子類物件
在測試類中,父類animal animal=new cat(),把父類的引用指向了cat
通過輸出結果我們可以發現,被修飾為static以及對成員變數進行引用時,輸出的資料是父類的資料,而非子類的資料
我們可以根據多型的特點進行一些總結
成員變數
編譯看父類,執行看父類
成員方法
編譯看父類,執行看子類,實現動態繫結
靜態方法(靜態方法更類有關,在類載入是就已經初始化,因此不算重寫)
編譯看父類,執行看父類
多型也有一些弊端,例如
當我在子類中加入特有變數name和特有方法tea(),父類的引用就無法引用到子類的特有變數和方法,如果需要引用,就必須進行強制轉換 cat c=(cat)animal,c就會指向最開始在堆中建立的那個物件。
最近在網上看到乙個很生動的形容多型的小故事,花木蘭替父從軍,形容的很深動貼切
多型的理解
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 ...
多型的理解
物件導向三原則 繼承 封裝 多型。必要條件 繼承 重寫 父類引用指向子類物件。過載是類中多型性的表現,重寫是父類和子類間多型性的表現。如果在子類中定義某方法與其父類有相同的名稱和引數,我們說該方法被重寫 子類的物件使用這個方法時,將呼叫子類中的定義,對它而言,父類中的定義如同被 遮蔽 了。如果在乙個...