c 有關虛方法要知道的知識點

2021-08-05 22:35:27 字數 1297 閱讀 7175

虛方法:這個方法其實就是為了重寫方法而存在的(在宣告中包含virtual關鍵字),否則沒感覺到它存在的意義。

其一:因為要重寫所以它的訪問型別如果為private則毫無意義阻礙了重寫動作的進行也就是它不能私有化,所以c#中virtual關鍵字和private關鍵字不能同時使用。

其二:因為靜態的方法和抽象方法不能重寫,同理c#中static,abstract關鍵字和virtual關鍵字不能同時使用。

其三:不能在宣告虛方法的同時指定重寫虛方法,因為重寫方法只能重寫基類的虛方法,也就是要提前在基類中宣告虛方法,所以virtual關鍵字和override關鍵字不能同時使用。

重寫方法:就是使從基類繼承的虛方法提供新的實現(使用關鍵字override宣告),從而為其子類所專有化。

同上面的思路一樣:因為靜態的方法和抽象方法不能重寫,同理c#中static,abstract,new關鍵字和override關鍵字不能同時使用。

總結用法如下:

非虛方法的實現(全部隱藏的虛方法)最初宣告的是什麼類的方法就永遠是什麼類的方法。

虛方法的實現:最終是什麼型別的方法就呼叫該型別的方法。

(含有隱藏的)虛方法的實現:最終是什麼型別的方法就呼叫(最靠近)該型別的方法。

注:在派生類中重寫基類中的虛方法時,可以使用base關鍵字呼叫基類中的虛方法。

相關理解程式如下:

1

namespace

classab211

public void fun2(a a)

1216}17

class program:a

1823

static void main(string args)

2431}32

*/33

/*34

public abstract class a

3540

public virtual void fun()

4144}45

46class program :a

4752

public new void fun()

5356

static void main(string args)

5762}63

*/64

65class

baseclass

6671}72

class

program:baseclass

7380

static

void main(string

args)

81

86 }

C 有關虛方法要知道的知識點

虛方法 這個方法其實就是為了重寫方法而存在的 在宣告中包含virtual關鍵字 否則沒感覺到它存在的意義。其一 因為要重寫所以它的訪問型別如果為private則毫無意義阻礙了重寫動作的進行也就是它不能私有化,所以c 中virtual關鍵字和private關鍵字不能同時使用。其二 因為靜態的方法和抽象...

面試Flask需要知道的知識點

class regexurl baseconverter def init self,url map,args super regexurl,self init url map self.regex args 0 第二步 把正則類賦值給我們定義的正則規則。re regexurl 第三步 在url中使...

C 中有關map知識點

map是c 一種關聯容器。下面從構造 刪除 新增 查詢和其它操作做簡單介紹。1 構造 mapmap map1 1 map1 1 1 2 map1.insert pair int,int 1,1 3 map1.insert map value type 1,1 3 刪除 map map1 map.er...