C#中overrid和new修飾符有什么不同
在C#的繼承中嘗嘗會用到相關(guān)的修飾詞:override和new。這兩個修飾符都可以在新的子類中,重寫同名的父類方法。
override: 擴(kuò)展或修改繼承的方法、屬性、索引器或事件的抽象或虛擬實(shí)現(xiàn)需要使用到。
new:在用作聲明修飾符時,new 關(guān)鍵字可以顯式隱藏從基類繼承的成員。 隱藏繼承的成員時,該成員的派生版本將替換基類版本。
以上是這兩個修飾符的解釋。對于這兩者之間的區(qū)別之類的說法,其實(shí)網(wǎng)上找到的有很多,大多都是些概念性的東西。我這里主要是對于,自己測試的代碼和大家分享下。
using System;
public class BaseClass{
public virtual void ShowA(){
Console.WriteLine("A");
}
public void ShowB(){
Console.WriteLine("B");
}
public void ShowAB(){
ShowA();
ShowB();
}
}
public class TestClass:BaseClass{
public override void ShowA(){
Console.WriteLine("AA");
}
public new void ShowB(){
Console.WriteLine("BB");
}
}
public class Example
{
public static void Main()
{
TestClass test = new TestClass();
test.ShowA();
test.ShowB();
test.ShowAB();
BaseClass test1 = new TestClass();
test.ShowA();
test.ShowB();
test.ShowAB();
Console.ReadLine();
Console.WriteLine("運(yùn)行結(jié)束");
}
}
輸出結(jié)果如下:

可以看出,override相當(dāng)于修改的父類的方法,對父類方法進(jìn)行了重寫。在父類方法中調(diào)用時,同樣也是會調(diào)用到這個已經(jīng)重寫過得類。override重寫的是父類地址下的方法實(shí)現(xiàn)信息。
對于new,對父類中的方法沒有產(chǎn)生影響,當(dāng)調(diào)用父類方法時,還是會執(zhí)行父類的方法。調(diào)用子類方法時,則調(diào)用子類方法。只是方法的名字相同,從而造成了子類對父類的方法造成了一種隱藏的特性。new相當(dāng)于重新開辟了新的方法實(shí)現(xiàn)位置,子類與父類方法的地址是不同的。
總結(jié)
以上所述是小編給大家介紹的C#中overrid和new修飾符有什么不同,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
C# log4net 日志輸出的實(shí)現(xiàn)示例
本文主要介紹了C# log4net 日志輸出的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-10-10
c#使用Unity粒子實(shí)現(xiàn)炮塔發(fā)射系統(tǒng)
Unity自帶粒子發(fā)射器、動畫器、渲染器各兩種,利用Unity的粒子系統(tǒng)制作一個炮塔發(fā)射系統(tǒng),了解粒子系統(tǒng),必須先了解每一個屬性都代表了什么,之后才能根據(jù)這些原理來調(diào)整出自己滿意的效果2022-04-04
Visual Stodio2022中沒有mysql.dll的解決辦法
這篇文章介紹了Visual Stodio2022中沒有mysql.dll的解決辦法,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-12-12
C#執(zhí)行Javascript代碼的幾種方法總結(jié)
本篇文章主要是對C#執(zhí)行Javascript代碼的幾種方法進(jìn)行了詳細(xì)的總結(jié)介紹,需要的朋友可以過來參考下,希望對大家有所幫助2014-01-01
C#實(shí)現(xiàn)一個相當(dāng)全面的數(shù)據(jù)轉(zhuǎn)換工具類
這篇文章主要為大家介紹了如何使用C#編寫一個通用工具類DataConvert來進(jìn)行數(shù)據(jù)轉(zhuǎn)換,包括30+個數(shù)據(jù)類型轉(zhuǎn)換,需要的可以了解一下2025-03-03
C#通過System.CommandLine快速生成支持命令行的應(yīng)用程序
這篇文章介紹了C#通過System.CommandLine快速生成支持命令行應(yīng)用程序的方法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07

