Virtual 和 Abstract的區別

2022-03-21 08:12:19 字數 561 閱讀 8409

二者都是用來修飾基類的,通過覆蓋基類的定義,讓派生類重新定義。

相同點:如果用於修飾方法,必須宣告為public(公有的)或者protected(受保護的),

因為派生類是不能訪問private(私有)方法的。

不同點:

virtual:虛擬的,

1基類中virtual修飾的方法必須有實現,即便是只有乙個大括號。

2.派生類中virtual可以被重寫,也可以不被重寫。在派生類中,要實現該修飾的方法的時候,

必須使用關鍵字override(告訴編譯器,需要重寫虛方法),必須有實現。

3.c#中如果要在派生類中重寫方法,那麼必須在基類中的方法前使用關鍵字virtual修飾。

這樣而已避免程式設計師在父類中不小心重寫了方法。

abstract:抽象的,

1.基類中abstract修飾的方法,一定不能實現。

2.派生類整abstract必須重寫。

3.如果成員有abstract修飾,那麼類必須有abstract修飾,因為只有抽象類才可以有抽象方法。

4.無法建立abstract類的例項,只能被繼承,無法例項化。

我也說說virtual 和非 virtual

virtual和非virtual關鍵是在執行時候,而不是在編譯時候.1.如果非virtual,編譯器就使用宣告的類對應的型別,也就是說,不是virtual的,在編譯時候,就定了,比如例子 執行結果 father,son,girl,都是執行的父類的方法 2,如果方法是virtual的,然後子類使用了o...

virtual和abstract的區別和聯絡

壹.相同 他們有些相似。有些場景用哪個都行!1.修飾父類 讓子類重寫 virtual和abstract都是用來修飾父類的,通過覆蓋父類的定義,讓子類重新定義。2.都用必須public 如果用來修飾方法,前面必須新增public,要不然就會出現編譯錯誤 虛擬方法或抽象方法是不能私有的。畢竟加上virt...

abstract和virtual方法實現多型的區別

多型就是不同物件對同乙個訊息的不同相應方式。舉例 cut 訊息 醫生收到cut訊息後,執行動手術 理髮師收到cut訊息後,執行減法 演員收到cut訊息後,停止演出。三個不同物件,對同乙個cut訊息的反應都不同,這就是多型。在c 中abstract和virtual方法都能實現多型。1.用abstrac...