古詩詞大全網 - 藝術簽名 - C#重載、C#重寫和C#隱藏的區別

C#重載、C#重寫和C#隱藏的區別

重載:函數名相同,參數列表不同的函數,根據參數的不同可以實現不同的邏輯。

重寫:子類重寫基類的虛函數,使不同的子類以不同的方式實現相同的功能。比如定義壹個鳥基類,在基類中定義壹個會飛的虛函數,實現燕子和蜂鳥的子類。很明顯,燕子和蜂鳥的飛行模式不壹樣,所以可以重寫。

隱藏:如果壹個子類用單詞new定義了壹個字段、屬性或函數,那麽該子類的字段、屬性或函數隱藏了基類的同名字段、屬性或函數。

您可以在VS中運行以下代碼,通過查看輸出來加深理解:

公?班級?基礎班?{

///?& lt總結& gt

///?重載函數1

///?& lt/summary & gt;

///?& ltreturns & gt& lt/returns & gt;

公?字符串?GetString()?{

回歸?“我是重載函數1”;

}

///?& lt總結& gt

///?重載函數2

///?& lt/summary & gt;

///?& ltparam?name = " obj " & gt& lt/param & gt;

///?& ltreturns & gt& lt/returns & gt;

公?字符串?GetString(對象?obj)?{

回歸?“我是重載函數2”;

}

///?& lt總結& gt

///?要重寫的函數

///?& lt/summary & gt;

公?虛擬的?字符串?OverideFunction()?{

回歸?”我是要被覆蓋的基類的函數”;

}

///?& lt總結& gt

///?隱藏功能

///?& lt/summary & gt;

///?& ltreturns & gt& lt/returns & gt;

公?字符串?HideFunction()?{

回歸?“我是基類的隱藏函數”;

}

}

公?班級?ChildClass?:?基礎班?{

///?& lt總結& gt

///?子類重寫功能

///?& lt/summary & gt;

///?& ltreturns & gt& lt/returns & gt;

公?覆蓋?字符串?OverideFunction()?{

回歸?“我是子類重寫的函數”;

}

///?& lt總結& gt

///?隱藏基類函數

///?& lt/summary & gt;

///?& ltreturns & gt& lt/returns & gt;

公?新的?字符串?HideFunction()?{

回歸?“我是子類函數,我隱藏了基類HideFunction”;

}

}

靜電?作廢?Main(string[]?args)?{

ChildClass?孩子?=?新的?child class();

控制臺。WriteLine("ChildClass。GetString():?"?+?孩子。GetString());

控制臺。WriteLine("ChildClass。GetString(對象?obj):?”?+?孩子。GetString(新?object()));

控制臺。WriteLine("ChildClass。OverideFunction():?"?+?孩子。OverideFunction());

控制臺。WriteLine("ChildClass。HideFunction():?"?+?孩子。hide function());

基礎班?基礎班?=?孩子?作為?基類;

控制臺。WriteLine("BaseClass。OverideFunction():?"?+?基類。OverideFunction());

控制臺。WriteLine("BaseClass。HideFunction():?"?+?基類。hide function());

基礎班?=?新的?base class();

控制臺。WriteLine("BaseClass。OverideFunction():?"?+?基類。OverideFunction());

}