virtual和abstract的區別(C )

2021-08-25 13:14:55 字數 441 閱讀 4708

在c#的學習中,容易混淆virtual方法和abstract方法的使用,現在來討論一下二者的區別。二者都牽涉到在派生類中與override的配合使用。

一、virtual方法(虛方法)

virtual 關鍵字用於在基類中修飾方法。virtual的使用會有兩種情況:

情況1:在基類中定義了virtual方法,但在派生類中沒有重寫該虛方法。那麼在對派生類例項的呼叫中,該虛方法使用的是基類定義的方法。

情況2:在基類中定義了virtual方法,然後在派生類中使用override重寫該方法。那麼在對派生類例項的呼叫中,該虛方法使用的是派生重寫的方法。

二、abstract方法(抽象方法)

abstract關鍵字只能用在抽象類中修飾方法,並且沒有具體的實現。抽象方法的實現必須在派生類中使用override關鍵字來實現。

我也說說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...