c 基礎(六)多型及過載和重寫的區別

2021-08-26 15:26:13 字數 568 閱讀 1726

多型是物件導向三大特徵之一,是最強大,也是相對來說比較難的乙個特徵。除了大型的專案架構中大量的使用了多型,有些設計模式其實也是多型的乙個體現。

那麼多型到底是什麼,它是怎麼在通過**體現出來的呢?在程式設計中,有乙個名詞叫重寫(override),實現重寫的這一過程就是多型的一種體現。那麼如何實現重寫呢?舉乙個例子,乙個父類中有乙個方法,方法名字叫eat,如果在該父類的子類中也想定義乙個eat方法(方法名字、引數個數、型別以及返回值都一樣),就需要將父類中的eat方法用virtual修飾,然後在子類中,將eat方法標記為override。這一過程就是方法的重寫,換句話說,就是多型的一種體現。

說到這來,不得不在提乙個詞:過載(overload),之前做開發的時候,過載和重寫總是分不清楚。過載只的是在乙個類中,乙個同名的方法,引數個數不同或者是引數的型別不同,這樣的方法叫做過載方法,所以過載和重寫大有不同。

在專案實戰中,多型的一種很好的表現形式是用父類的變數去指向子類的物件,然後由父類的變數進行統一排程,排程的方法是指向的物件中被重寫的方法,而不是父類中的方法。這麼表達可能有點繞,在簡單點說,就是能夠呼叫什麼方法由變數型別決定,到底執行誰的方法是由實際指向的物件決定。

C 過載重寫和多型區別

1.過載和重寫的區別 過載overload 在同乙個類中,函式名相同,引數列表不同,編譯器會根據這些函式的不同引數列表,將同名的函式名稱做修飾,從而生成一些不同名稱的預處理函式,未體現多型。重寫override 也叫覆蓋,子類重新定義父類中有相同名稱相同引數的虛函式,主要是在繼承關係 現的,被重寫的...

C 過載重寫和多型區別

1.過載和重寫的區別 過載overload 在同乙個類中,函式名相同,引數列表不同,編譯器會根據這些函式的不同引數列表,將同名的函式名稱做修飾,從而生成一些不同名稱的預處理函式,未體現多型。重寫override 也叫覆蓋,子類重新定義父類中有相同名稱相同引數的虛函式,主要是在繼承關係 現的,被重寫的...

C 基礎 重寫和過載的區別

子類和父類的方法名相同,可以在子類的方法名後面加new new是將基類方法隱藏,但不影響父類的功能。public class person public class teacher person 不同物件對同乙個方法呼叫的不同行為 指不同物件收到同一次訊息時,會產生不同的行為 因為子類在繼承父類的方...