基本概念:多態

多態的概念:

對象的多種形式。

多態的意思是事物具有不同形式的能力。舉個例子,對於不同的實例,某個操作可能會有不同的行爲。這個行爲依賴於所要操作數據的類型。比如說加法操作,如果操作的數據是數,它對兩個數求和。如果操作的數據是字符串,則它將連接兩個字符串。就像某個單詞在不同的上下文中具有不同的含義。

相同的行爲(在基類中定義)在不同的類中有着不同的實現(在子類中實現),或者更徹底的說,多態性就是以相同的指令喚起不同的函數。

多態描述的是同一個消息可以根據發送消息對象的不同採用多種不同的行爲方式,即不同的對象收到到相同的消息時產生不同的動作。

多態機制使具有不同內部結構的對象可以共享相同的外部接口。這意味着,雖然針對不同對象的具體操作不同,但通過一個公共的類,它們(那些操作)可以通過相同的方式予以調用。多態在實現繼承的過程中被廣泛應用。

同過程化、結構化語言的比較,側面反映出面向對象中多態的作用

面向對象程序設計語言支持多態,術語稱之爲“one interface multiple method(一個接口,多個實現)”。簡單來說,多態機制允許通過相同的接口引發一組相關但不相同的動作,通過這種方式,可以減少代碼的複雜度。在某個特定的情況下應該作出怎樣的動作,這由編譯器決定,而不需要程序員手工干預。

在多函數程序中,許多重要的數據被聲明爲全局變量,這樣它們纔可以被所有的函數訪問。每個函數又可以具有它自己的局部變量。全局變量很容易被某個函數不經意之間改變。而在一個大程序中,很難分辨每個函數都使用了哪些變量。如果我們需要修改某個外部數據的結構,我們就要修改所有訪問這個數據的函數。這很容易導致bug的產生。

在結構化程序設計中,另一個嚴重的缺陷是不能很好的模擬真實世界的問題。這是因爲函數都是面向過程的,而不是真正的對應於問題中的各個元素。

面向過程的程序設計的一些特點如下:
·強調做(算法);
·大程序被分隔爲許多小程序,這些小程序稱爲函數;
·大多數函數共享全局數據;
·數據開放的由一個函數流向另一個函數。函數把數據從一種形式轉換爲另一種形式。
採用由上至下的程序設計方法。

多態概念中注意的地方:

1、即使再多的形式,它也僅僅是一個類的實例。

2、子類可以調用父類中的屬性和方法,但父類不能調用子類特有的屬性和方法。

3、如果父類的方法被子類覆蓋(overried)時,父類可以調用這個方法,而且會以子類的方法執行。

各類程序語言對多態的支持情況:

Java語言中通過函數的重載和重寫實現多態。

C++面向對象的編程領域裏,多態是指同一個實體可以同時具有多種形式,多態性廣義地分爲靜態多態性和動態多態性。靜態多態性是指:一個實體同時以不同的形式存在,在C++中,靜態多態性具體表現爲函數重載(overload)和運算符重載(operator overload);動態多態性具體表現爲虛函數和覆蓋(override)。 

DotNet

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章