多型的概念,特點與使用

2022-09-13 12:15:13 字數 2328 閱讀 5890

多型:可以理解為事物存在的多種體現形態

如:人:男人,女人

動物:貓,狗,鳥

貓這個動物應該是貓型別的:貓 cat = new 貓();

同時貓也是動物的一種:動物 y = new 貓();  動物是貓和狗具體事物抽取出來的父型別,父型別指向了子類物件 

1、多型的體現

父類的引用指向了自己的子類物件

父類的引用也可以接收自己的子類物件

2、多型的前提

必須是類與類之間有關係,要麼繼承,要麼實現

還有乙個前提:存在覆蓋  

3、多型的好處

多型的出現大大的提高了程式的擴充套件性

4、多型的弊端

雖然提高了擴充套件性,但是只能使用父類的引用訪問父類中的成員

5、多型的應用

6、多型使用的注意事項  

看乙個關於多型的例子:

1

abstract

class

teacher28

}9class mathteacher extends

teacher

1015}16

class chineseteacher extends

teacher

1722

public

void

sleep()

2326}27

//將**進一步優化,定義乙個工具類,這樣就不需要例項化每乙個老師物件,直接呼叫工具類,然後把各種型別的teacher傳進去既可

28class

teachtest

2935}36

class

test

3763 }

在多型中成員函式的特點:

在編譯時期:參閱引用型變數所屬的類中是否有呼叫的方法,如果有,編譯通過,如果沒有,編譯失敗

在執行時期:參閱物件所屬的類中是否有呼叫的方法

簡單總結:成員函式在多型呼叫時,編譯看左邊,執行看右邊

(面試)在多型中成員變數,靜態成員函式的特點:

無論編譯或執行,都參考左邊(引用型變數所屬的類)

如:

1 fu f = new

zi();

2 system.out.println(f.num);//

列印的是父類裡面的變數num

3 zi z = new

zi();

4 system.out.println(z.num);//

列印的是子類裡面的變數num5//

靜態的方法也是一樣。

乙個集合了介面,多型的例子

1/*2

類 主機板,主機板有執行方法run()

3一段時間後想要上網 加入網絡卡類

4想要聽** 加入 音效卡類56

但是這樣乙個乙個的加入使得**的擴充套件性很差,每次都要重新修改很多**78

於是引入乙個通用的介面pci類

9所有裝置都有開啟和關閉功能

10讓網絡卡和音效卡分別取實現pci介面,重寫成自己的開啟和關閉功能

1112

給主機板加上乙個實現pcirun的方法,傳遞引數的值為pci型別的

13可以利用多型pci p = new netcard();

1415

所以在下面主函式中執行時 建立新的主機板物件以後

16mb.pcirun(new netcard());

17mb.pcirun(new soundcard());

18就可以分別使用網絡卡和音效卡了,如果以後還要再加入比如顯示卡

19就只需要建立乙個顯示卡類去實現pci介面,然後直接用主機板中的pcirun方法就可以了。

2021

*/22

class

mainboard

2328

public

void

pcirun(pci p)

2933}34

inte***ce

pci35

39class netcard implements

pci40

45public

void

close()

4649}50

class soundcard implements

pci51

56public

void

close()

5760}61

class

test

6270}71

/*72

這樣做的好處:

73大大的降低了主機板和各種獨立裝置直接的耦合性

74中間用乙個pci介面來連線起來

75程式日後非常方便擴充套件

76*/

多型中成員變數的使用特點

訪問成員變數的兩種方式 不僅是多型中,繼承也遵循這個規則 1.直接通過物件名稱訪問成員變數,看等號左邊是誰,優先用誰,沒有則向上找 例如 父類 public class fu 子類 public class ziextends fu main方法 等號左邊是父類,所以輸出父類的成員變數 public...

多型成員的特點

多型的成員特點 1 成員變數,編譯時看左邊,執行的時候看右邊 2 成員方法,編譯時看左邊,執行的時候看右邊 3 靜態方法,編譯時看左邊,執行的時候看左邊package fangfa.com public class jiekou class father public static void nam...

多型與虛函式的概念

1 多型 在物件導向方法中一般是這樣表述多型性的 向不同的物件傳送同乙個訊息,不同的物件在接收時會產生不同的行為 即方法 也可以說,多型性是 乙個介面,多種方法 2 從系統實現的角度看,多型性分為兩類 靜態多型性和動態多型性。以前學過的函式過載和運算子過載實現的多型性屬於靜態多型性,動態多型性是通過...