C 虛方法 與 隱藏方法 new 區別

2022-02-19 01:23:48 字數 791 閱讀 3941

重寫和隱藏的定義:

隱藏:基類方法不做申明(預設為非虛方法),在派生類中使用new宣告此方法的隱藏。

重寫(virtaul)時,定義的變數為父類或子類, 賦值為子類時.  皆呼叫子類的重寫方法;(會從子類中查詢有重寫則呼叫, 沒則呼叫基類方法)

隱藏(new)時,定義的變數為父類則呼叫父類的方法(不管賦值是子類還是父類),定義的變數為子類則呼叫子類的方法。(使用場景: 當子類想取的一方法名稱與父類相同時, 可以使用. 子類的方法與父類的方法相對來說是沒有直接的關係(繼承,重寫==).)

隱藏(new)示例:

using    system;  

class    a  

}  class    b:    a  

}  class    test  

}  輸出為  

b.f  

a.f  

重寫virtual(虛方法)示例

using    system;     

class    a     

}     

class    b:    a     

}     

class    test     

}     

輸出為      b.f      b.f

引用:

虛方法與new隱藏

虛方法 通過用virtual修飾的父類方法可以在子類中用override修飾子類中的同名方法,使包含子類的父類物件可以使用子類中重寫後的該方法。new 在子類中與在父類中有相同名稱,簽名的方法時,此時子類物件只能呼叫自身的該方法,不能呼叫父類中該同名方法,因為父類中該同名方法被隱藏了,為了直觀還表達...

new方法和虛方法

new方法 在繼承父類時相同的方法可能有不同的表現形式,比如說talk 父類中 class mammal 子類中 class horse mammal 使用new關鍵字重寫父類中talk 方法,將父類中的talk 隱藏 所以在例項化時 horse bighorse new horse bighors...

C 中抽象方法與虛方法區別

什麼時候使用抽象方法 當兩個或多個類中有重複部分的時候,我們可以把重複的部分抽象出來作為乙個基類,如果希望這個基類不能被例項化,就可以把這個基類設計成抽象類。抽象方法特點 1 抽象方法沒有方法體 2 抽象方法用abstract修飾 3 抽象方法必須在抽象類中 4 抽象類無法例項化 5 父類是抽象類,...