java多型的簡單理解

2021-07-25 10:57:23 字數 1574 閱讀 4856

多型:某乙個(物件)事物在不同時刻表現出來的不同狀態

舉例:1.貓可以是貓的型別,貓 m = new 貓();

2.同時貓也是動物的一種:也可以把貓稱為動物

動物 d = new 貓();

再舉乙個例子:水在不同時刻的狀態;

水(液體,固體,氣態)

多型的前提:

1,要有繼承關係

2.要有方法重寫

其實沒有也是可以的,但是如果沒有這個就沒有意義

3.要有父類引用指向子類物件

父 fu = new 子();

用**體現多型:

多型中的成員訪問特點:

a:成員變數

編譯看左邊,執行看左邊

b:構造方法

建立子類物件的時候,訪問父類的構造方法,對父類的資料進行初始化

c:成員方法

編譯看左邊,執行看右邊

d:靜態方法

編譯看左邊,執行看左邊

(靜態和類相關,算不上重寫,所以訪問還是左邊的)

由於成員方法存在方法重寫,所以他執行看右邊

多型的好處

a:提高了**的維護性(繼承保證)

b:提高了**的擴充套件性()

多型的弊端:

不能使用子類的特有的功能,

如果一定要使用的話:

a:建立子類物件,呼叫方法即可(可以,但不合理,而且佔記憶體)

b:(向下轉型)

fu f = new zi();(向上轉型)

zi z = (zi)f; (向下轉型)

物件間的轉型問題:

向上轉型:

fu f = new zi();

向下轉型:

zi z=(zi)f;//要求該f必須是能夠轉換為子的,比如說貓不能轉換為狗 但是                             動物轉換為狗就是可以的

多型的問題理解:

孔子裝爹;

classcastexception錯誤。型別轉換異常

一般是在多型的向下轉型中出現

繼承的時候:

子類中有和父類中一樣的方法,叫做重寫

子類中沒有父類出現過的方法,方法就被繼承

多型的好處:

1、可替換性  多型對已存在**具有可替換性。例如,多型對圓circle類工作,對其他任何圓形幾何體,如圓環,也同樣工作。

2、可擴充性   多型對**具有可擴充性。增加新的子類不影響已存在類的多型性、繼承性,以及其他特性的執行和操作。實際上新加子類更容易獲得多型功能。例如,在實現了圓錐、半圓錐以及半球體的多型基礎上,很容易增添球體類的多型性。

3 介面性(inte***ce-ability)。多型是超類通過方法簽名,向子類提供了乙個共同介面,由子類來完善或者覆蓋它而實現的。如圖8.3 所示。圖中超類shape規定了兩個實現多型的介面方法,computearea()以及computevolume()。子類,如circle和sphere為了實現多型,完善或者覆蓋這兩個介面方法。

4.靈活性(flexibility)。它在應用中體現了靈活多樣的操作,提高了使用效率。

5.簡化性(simplicity)。多型簡化對應用軟體的**編寫和修改過程,尤其在處理大量物件的運算和操作時,這個特點尤為突出和重要。

Java 多型的理解

物件導向程式設計有三個特徵,即封裝 繼承和多型。封裝隱藏了類的內部實現機制,從而可以在不影響使用者的前提下改變類的內部結構,同時保護了資料。繼承是為了重用父類 同時為實現多型性作準備。那麼什麼是多型呢?要理解多型性,首先要知道什麼是 向上轉型 我定義了乙個子類cat,它繼承了animal類,那麼後者...

Java多型的理解

要想清楚的理解什麼是多型,就必須要了解 向上轉型 這個概念。下面我們通過乙個例子來介紹向上轉型。public class person protected void sleep public void play public class student extends person public c...

java多型的理解

public string show d obj public string show a obj class b extends a public string show b obj public string show a obj class c extends b class d extend...