您好,登錄后才能下訂單哦!
這篇文章主要介紹了C#中重寫及覆蓋的區別有哪些的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇C#中重寫及覆蓋的區別有哪些文章都會有所收獲,下面我們一起來看看吧。
在C#中,用override關鍵字來重寫一個父類中的虛方法或抽象方法。override關鍵字用于指示編譯器,我要用派生類中的一個方法,重寫基類中的同名方法。通過重寫基類中的方法,可以實現多態性。有關重寫與虛方法和抽象方法的詳細示例,可移步C#虛方法和抽象方法示例。
override關鍵字的語法如下:
public override returnType MethodName(ParameterList) { // 方法實現 }
其中,public表示訪問修飾符;override表示重寫虛方法或抽象方法;returnType表示方法的返回類型;MethodName表示方法名稱;ParameterList表示方法的參數列表。
需要注意的是,重寫方法的訪問修飾符必須與被重寫方法的訪問修飾符相同或更為寬松。
在C#中,用new關鍵字來覆蓋一個父類中的成員方法或成員變量。new關鍵字用于指示編譯器,派生類中的一個方法或變量將隱藏基類中的同名方法或變量,從而改變了繼承體系中的原有布局關系。
new關鍵字的語法如下:
new returnType MemberName(ParameterList) { // 成員實現 }
其中,returnType表示成員的返回類型;MemberName表示成員的名稱;ParameterList表示成員的參數列表。
下面是一個示例:
//父類 public class FatherClass { public virtual string GetName() { return "我是父類中的虛擬方法"; } } //子類1 public class SonClass1 : FatherClass { public override string GetName() { return "我是子類1中的重寫方法"; } } //子類2 public class SonClass2 : FatherClass { public new string GetName() { return "我是子類2中的覆蓋方法"; } }
隨后通過程序入口函數調用:
public class Program { public static void Main(string[] args) { FatherClass fatherClass = new FatherClass(); Console.Write("直接調用父類中的虛方法:"); Console.WriteLine(fatherClass.GetName()); SonClass1 s1 = new SonClass1(); Console.Write("直接調用子類1中的重寫方法:"); Console.WriteLine(s1.GetName()); SonClass2 s2 = new SonClass2(); Console.Write("直接調用子類2中的覆蓋方法:"); Console.WriteLine(s2.GetName()); FatherClass f1 = new SonClass1(); Console.Write("聲明父類,調用子類1中的重寫方法:"); Console.WriteLine(f1.GetName()); FatherClass f2 = new SonClass2(); Console.Write("聲明父類,調用子類2中的覆蓋方法:"); Console.WriteLine(f2.GetName()); } }
運行程序,得到的結果如下:
直接調用父類中的虛方法:我是父類中的虛擬方法
直接調用子類1中的重寫方法:我是子類1中的重寫方法
直接調用子類2中的覆蓋方法:我是子類2中的覆蓋方法
聲明父類,調用子類1中的重寫方法:我是子類1中的重寫方法
聲明父類,調用子類2中的覆蓋方法:我是父類中的虛擬方法
關于“C#中重寫及覆蓋的區別有哪些”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“C#中重寫及覆蓋的區別有哪些”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。