抽象方法與虛方法

2021-09-11 08:48:21 字數 1067 閱讀 6886

在物件導向程式設計語言中抽象方法指一些只有方法宣告,沒有具體方法體的方法。抽象方法一般存在於抽象類或介面中。

在c#中,抽象方法具有以下特性:

抽象方法是隱式的virtual方法

只允許在抽象類中使用抽象方法宣告

因為抽象方法不提供實現,所以沒有方法體;方法宣告只是以乙個分號結束,並且在簽名後沒有大括號。

抽象類必須為所有介面成員提供實現。

抽象類往往用來表示對問題領域進行分析、設計中的出的下抽象概念,是對一系列看上去不同的,但是本質上相同的具體概念的抽象。

通常,抽象類使用abstract修飾;抽象類是不完整的,只能用作基類,抽象類主要用來進行型別隱藏和充當全域性變數的角色。

抽象類不能例項化

抽象類可以包含抽下個你方法和抽象訪問器

不能用sealed修飾符修飾抽象類,因為兩個修飾符的含義是相反的。採用sealed修飾符的類無法繼承,而abstract修飾符要求對類進行繼承。

從抽象類派生的非抽象類必須包括繼承的所有抽象方法和抽象訪問器的實際實現。

乙個抽象類可以同時包含抽象方法和非抽象方法。

抽象方法的目的在於子類必須實現與這一方法關聯的行為,避免子類的隨意性。

抽象方法只在派生類中真正實現。這表明抽象方法只存放函式原型(方法的返回型別,使用的名稱及引數),而不涉及主體**。

如果父類被宣告為抽象類,並存在未實現的抽象方法,那麼子類就必須實現父類中所有的abstract成員,除非該類也是抽象的。

使用virtual修飾的方法,在父類中修飾,在子類中使用override修飾符重寫。

override 不能與new、static、virtual修飾符同時使用,並且重寫方法只能用於重寫基類中的虛方法。

抽象方法

虛方法關鍵字

使用abstract修飾

使用virtual修飾,使用override重寫

宣告條件

只能在抽象類中宣告

可以在基類中宣告

是否需要寫方法體

只有方法名稱、沒有方法體

有方法體,子類可以覆蓋、也可以不覆蓋

是否重寫

派生類中必須重寫基類的抽象方法

可以不重寫

虛方法與抽象方法

虛方法 virtual,虛方法給父類提供了一種預設的實現,子類可以使用override重寫虛方法,虛方法不能出現在密封類 sealed 中。抽象類,不能被例項化,但可以例項化其子類的物件,抽象方法必須出現在抽象類中,抽象方法必須在子類中重寫。子類繼承抽象類,必須重寫抽象類中所有的抽象方法 除非子類也...

虛方法與抽象方法

虛方法 1 virtual方法表示此方法可以被重寫,也就是說這個方法具有多型.父類中的方法是通用方法,可以在子類中重寫以重新規定方法邏輯.2 virtual方法可以直接使用,和普通方法一樣 3 不是必須重寫的.子類可以使用base.方法 的方式呼叫,無論有沒有在子類使用override去重寫 vir...

抽象方法與虛方法

虛方法 使用virtual關鍵字 可以有方法的實現,子類在繼承虛方法的類時要可以重寫這個方法 虛函式僅適用於有繼承關係的類物件,所以只有類的成員函式才能說明為虛函式 靜態成員函式不能是虛函式 static不能用來修飾virtual 建構函式不能是虛函式 析構函式可以是虛函式 抽象方法 使用abstr...