多型和重寫

2021-08-16 09:16:38 字數 473 閱讀 3502

多型是基於對抽象方法的覆蓋來實現的,用統一的對外介面來完成不同的功能。過載也是用統一的對外介面

來完成不同的功能。那麼兩者有什麼區別呢?

過載,是指允許存在多個同名方法,而這些方法的引數不同。過載的實現是:編譯器根據方法不同的參數列

,對同名方法的名稱做修飾。對於編譯器而言,這些同名方法就成了不同的方法。它們的呼叫位址在編譯期

就繫結了。

多型:是指子類重新定義父類的虛方法(virtual,abstract)。當子類重新定義了父類的虛方法後,父類根據

賦給它的不同的子類,動態呼叫屬於子類的該方法,這樣的方法呼叫在編譯期間是無法確定的。

不難看出,兩者的區別在於編譯器何時去尋找所要呼叫的具體方法,對於過載而言,在方法呼叫之前,編譯

器就已經確定了所要呼叫的方法,這稱為「早繫結」或「靜態繫結」;而對於多型,只有等到方法呼叫的那一刻

,編譯器才會確定所要呼叫的具體方法,這稱為「晚繫結」或「動態繫結」。

重寫 多型和過載

重寫 重寫是指重寫基類的方法。注意 基類的方法一定要使用virtual修飾符,派生類的方法一定要使用override修飾符。例 public class a public class b a static void main string args 結果為 子類。多型 同一種操作作用於不同的物件,可...

方法重寫和多型

我們可以發現在繼承後,子類都缺失了自己特有的方法,只有從父類繼承下來的方法,所以為了即擁有從父類繼承的屬性和方法外 遺產 自己也需要有自己的方法 自己的資產 聯想到顯示中的例子 新的帝王繼承王位,覺得制度不好,為了勵精圖治一般會重新設定新的制度。子類根據需求對從父類繼承的方法進行重新編寫。編寫時,可...

重寫前奏 繼承和多型

上次說到的過載是指同一類中方法和方法之間的關係,這次向大家介紹的重寫是子不同類中方法和方法的關係 在介紹重寫之前,要先說說繼承和多型 物件的繼承代表了 is a 的關係,a和b可以描述成b是a,就可以稱為b可以繼承a,不能相互顛倒。繼承者是被繼承者的特殊化。在繼承中,子類是派生類,父類是基類。子類不...