1.例項解析
控制台程式
classprogram}}
public
class
badlyconstructedtype
//this will be overridden in the derived type.
public
virtual
void
dosomething()
}public
class
derivedtype : badlyconstructedtype
public
override
void
dosomething()
", initialized);
}}
結果分析:
例項化derivedtype時候,呼叫badlyconstructedtype時,執行的dosomething是derivedtype重寫的方法,而非父類。
所以在使用的虛方法重寫時,需要特別注意。
2.原理描述
虛方法:追問:1、virtual方法表示此方法可以被重寫, 也就是說這個方法具有多型.父類中的方法是通用方法,可以在子類中重寫以重新規定方法邏輯.
2、virtual方法可以直接使用,和普通方法一樣
3、不是必須重寫的. 子類可以使用base.方法 的方式呼叫, 無論有沒有在子類使用override去重寫
virtual關鍵字只是明確標示此方法可以被重寫, 其實它和一般的方法沒有什麼區別
相應的
sealed關鍵字標示此方法不可以被重寫
虛方法和抽象方法的區別:
1.虛方法可以有實現體,抽象方法不能有實現體。
2.抽象方法
要求派生類必須過載這個方法;
虛方法告訴編譯器,這個方法可以重寫。
當基類的方法與派生類的方法重名時,
可以選擇派生類的方法從基類繼承並重寫,
還是,把基類的方法隱藏起來。
抽象方法不能有實現體,什麼意思?把基類的方法隱藏起來,如何隱藏
追答:
程式裡沒有什麼方法是叫抽象方法的,那叫虛方法。虛方法就是子類可以覆蓋基類的方法。純虛方法,是在子類裡實現的,基類不實現的。
自己好好看看書,書上都有的,最基本的知識。
虛方法與重寫方法
在c 中,繼承,虛方法,與重寫方法結合在一起才能實現多型性 虛方法是指允許其子類重新定義的方法的方法,在宣告時,需要使用virtual修飾符,不能是私有的 public virtual int add int a,int b return a b 重寫方法也稱覆蓋,是在派生類使用override修飾...
2014 03 16 虛方法和重寫方法
物件導向程式設計的三大特徵之一 多型,而實現多型的乙個主要表現形式就是子類重寫基類的虛方法或函式成員。虛方法 關鍵字 virtual 虛方法的訪問修飾符不能是私有的,否則子類無法繼承和重寫 重寫方法 關鍵字 override 重寫基類的虛方法時,訪問修飾符需要和基類虛方法保持一致 重寫和過載的區別 ...
如何重寫object虛方法
在 c 中 object 是所有類的基類,所有的結構和類都直接或間接的派生自它。前面這段話可以說所有的 c 開發人員都知道,但是我相信其中有一部分程式設計師並不清楚甚至不知道我們常用的 tostring equals 和 gethashcode 虛方法都來自於 object 類,並且我們可以對它們進...