C 區分 重寫 覆蓋和過載以及虛方法和抽象方法

2021-07-26 03:56:35 字數 1947 閱讀 5069

重寫:

在宣告時,父類的方法前面加上virtual關鍵字,子類的方法前面加上override關鍵字,且與父類方法同名,表示父類的方法可以被子類進行修改和重新定義。

覆蓋:

在宣告子類方法的時候,新增new關鍵字,定義與父類同名的方法,稱為覆蓋。

區別:

當用子類建立父類的時候,重寫呼叫的是子類中的功能,而覆蓋呼叫的仍然是父類的功能。用子類建立子類和用父類建立父類的時候,則相應的進行呼叫。

下面是當子類建立父類時,重寫和覆蓋的區別的**:

using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.threading.tasks;

namespace 重寫和覆蓋

",c1.fclass());

c3 c3 = new c4();

console.writeline("覆蓋後的c3應該是:newfather; 螢幕顯示是:", c3.nfclass());

console.readkey();

}#region 重寫方法的函式

public

class c1

}public

class c2 : c1

}#endregion

#region 覆蓋方法的函式

過載:函式過載允許建立多個同名函式,每個函式可使用不同的引數型別。優點是不必顯示地指定要使用哪個函式,只需要提供乙個陣列引數,就可以根據引數型別執行相應的函式。

覆蓋:

過載是發生在同乙個類中,覆蓋是發生在乙個父類和乙個子類之間。

下面是過載的**:

using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.threading.tasks;

namespace 函式過載

; double myarray2 = ;

int intmaxval = maxvalue(myarray1);

double doublemaxval = maxvalue(myarray2);

console.writeline("int型別的返回最大值為\ndouble型別的返回最大值為",intmaxval,doublemaxval);

console.readkey();

}static

int maxvalue(int myarray)

static

double maxvalue(double myarray)

}return maxvalue;}}

}

虛方法:用virtual關鍵字

使用方法:

(1)可以在子類(派生類)中用override重寫父類(基類)的方法

(2)可以在子類中直接由物件呼叫,使用基類中的方法

抽象方法:用abstract關鍵字

抽象方法是只有定義、沒有實際方法體的函式,它只能在抽象函式中出現,並且必須在子類中重寫。

C 過載和重寫 覆蓋

何為重寫?重寫 override 指子類修改父類中某個函式的函式體,需要重寫的父類中的函式必須是由virtual abstract 或 override標註的,不能重寫非虛方法或靜態方法。override是在繼承的時候,如果你寫的函式與要繼承的函式函式特徵 函式特徵包括函式名,引數的型別和個數 相同...

c 覆蓋 重寫 過載

乙個抽象方法,介面,標記為virtual的方法,你在派生類中去實現,或者改寫他的功能,叫重寫 在父類中定義了乙個方法如 public string getname 方法,在派生類中再次定義了乙個同樣的方法public string getname 則派生類覆蓋了父類的方法 覆蓋重寫的區別 重寫 pu...

過載和覆蓋重寫

過載即在同乙個類中,方法名稱相同,引數列表不同 引數列表的順序不同或者引數列表的個數不同 的方法,稱為過載。public class overloaddemo public overloaddemo string name,int age public overloaddemo string nam...