物件導向三大特性 多型

2022-03-18 01:25:08 字數 3057 閱讀 1405

什麼是多型:

父類的一些成員,子類繼承周去重寫從而實現不同的功能。

多型的風雷

多型分為兩種,一種是編譯時的多型,一種是執行時的多型。

編譯時多型:編譯時的多型性是通過過載來實現的。

編譯時的多型性:編譯時的多型性是通過過載來實現的。對於非虛的成員來說,系統在編譯時,根據傳遞的引數、返回的型別等資訊決定實現何種操作。

執行時的多型性:執行時的多型性就是指直到系統執行時,才根據實際情況決定實現何種操作。c#中執行時的多型性是通過覆寫虛成員實現。

多型的實現

過載(overload)

過載指的是同乙個累中有兩個或者多個名字但是引數不同的方法。

public

void

calculate()

public

void calculate(int

num)

執行時多型: 重寫

重寫有兩種, 一種是override修飾符, 另一種使用new 修飾符

override是指「覆蓋」,是指子類覆蓋了父類的方法。子類的物件無法再訪問父類中的該方法。

new是指「隱藏」,是指子類隱藏了父類的方法,當然,通過一定的轉換,可以在子類的物件中訪問父類的方法。

重新(override)是對父類中的虛函式(virtual method)或抽象函式的「覆蓋」。

///

///動物類(父類)

/// class

animal

//////

名字(虛屬性)

/// public

virtual

string

myname

}//////

吃(虛方法)

/// public

virtual

void

eat()

//////

叫(虛方法)

/// public

virtual

void

shout()

}//////

狗(子類)

/// class

dog:animal

//////

名字(重寫父類屬性)

/// public

override

string

myname

}//////

吃(重寫父類虛方法)

/// public

override

void

eat()

//////

叫(重寫父類方法)

/// public

override

void

shout()

}//////

貓(子類)

/// class

cat : animal

//////

名字(重寫父類屬性)

/// public

override

string

myname

}//////

吃(重寫父類虛方法)

/// public

override

void

eat()

//////

叫(重寫父類方法)

/// public

override

void

shout()

}//////

羊(子類)

/// class

sheep : animal

//////

名字(重寫父類屬性)

/// public

override

string

myname

}//////

吃(重寫父類虛方法)

/// public

override

void

eat()

//////

叫(重寫父類方法)

/// public

override

void

shout()

}

重寫(new)

new:隱藏從父類繼承過來的同名成員。

隱藏的後果是子類呼叫不到父類的成員。

///

///動物類(父類)

/// class

animal

//////

名字(虛屬性)

/// public

virtual

string

myname

}//////

吃(虛方法)

/// public

virtual

void

eat()

//////

叫(虛方法)

/// public

virtual

void

shout()

}//////

狗(子類)

/// class

dog:animal

//////

名字(重寫父類屬性)

/// public

override

string

myname

}//////

吃(重寫父類虛方法)

/// new

public

void

eat()

//////

叫(重寫父類方法)

物件導向三大特性之多型

多型 同乙個物件在不同時刻表現出來的不同狀態。多型的前提和體現 存在繼承關係或者實現關係 這裡的實現是指介面間的關係 有方法的重寫。有父類引用指向子類物件。多型中成員的訪問特點 訪問成員變數時 首先定義乙個動物類 其次定義乙個子類來繼承它 定義乙個測試類 由此可見當我們用多型的形式去訪問類中的成員變...

物件導向三大特性之多型

本想自己寫 但是發現乙個更好的。抽象類的多型 場景描述 一位剛畢業的老師,目前只能通過騎車上班,多年後終於坐騎公升級了,有了自己的小汽車,於是騎著小汽車上班。騎自行車上班 1.自行車類 public class bike public void stop 2.教師類 public class tea...

物件導向三大特性之多型

多型更像是一種思想,而並非具體的技術。因為繼承的存在,從而引發了多型,python本就是多型的形式,就像現實世界一樣。都是起源於某一單細胞生物但是經過不斷的演化差異化越來越大。多型的定義即是 在不同的類中例項化得到的物件下的相同的方法,實現的過程不一樣。這個就很有意思了.多型的前提是必須有繼承的支援...