C# 函數籠罩總結進修(推舉)。本站提示廣大學習愛好者:(C# 函數籠罩總結進修(推舉))文章只能為提供參考,不一定能成為您想要的結果。以下是C# 函數籠罩總結進修(推舉)正文
籠罩類成員:經由過程new症結字潤飾虛函數表現籠罩該虛函數。
一個虛函數被籠罩後,任何父類變量都不克不及拜訪該虛函數的詳細完成。
public virtual void IntroduceMyself(){...}//父類虛函數
public new void IntroduceMyself(){...}//子類籠罩父類虛函數
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace MethodOverrideByNew { public enum Genders { Female=0, Male=1 } public class Person { protected string _name; protected int _age; protected Genders _gender; /// <summary> /// 父類結構函數 /// </summary> public Person() { this._name = "DefaultName"; this._age = 23; this._gender = Genders.Male; } /// <summary> /// 界說虛函數IntroduceMyself() /// </summary> public virtual void IntroduceMyself() { System.Console.WriteLine("Person.IntroduceMyself()"); } /// <summary> /// 界說虛函數PrintName() /// </summary> public virtual void PrintName() { System.Console.WriteLine("Person.PrintName()"); } } public class ChinesePerson :Person{ /// <summary> /// 子類結構函數,指明從父類無參結構函數挪用起 /// </summary> public ChinesePerson() :base(){ this._name = "DefaultChineseName"; } /// <summary> /// 籠罩父類辦法IntroduceMyself,應用new症結字潤飾虛函數 /// </summary> public new void IntroduceMyself() { System.Console.WriteLine("ChinesePerson.IntroduceMyself()"); } /// <summary> /// 重載父類辦法PrintName,應用override症結字潤飾虛函數 /// </summary> public override void PrintName(){ System.Console.WriteLine("ChinesePerson.PrintName()"); } } class Program { static void Main(string[] args) { //界說兩個對象,一個父類對象,一個子類對象 Person aPerson = new ChinesePerson(); ChinesePerson cnPerson = new ChinesePerson(); //挪用籠罩的辦法,父類對象不克不及挪用子類籠罩過的辦法,只能挪用本身的虛函數辦法 aPerson.IntroduceMyself(); cnPerson.IntroduceMyself(); //挪用重載辦法,父類對象和子類對象都可以挪用子類重載事後的辦法 aPerson.PrintName(); cnPerson.PrintName(); System.Console.ReadLine(); } } }
成果:
Person.IntroduceMyself()
ChinesePerson.IntroduceMyself()
ChinesePerson.PrintName()
ChinesePerson.PrintName()
以上這篇C# 函數籠罩總結進修(推舉)就是小編分享給年夜家的全體內容了,願望能給年夜家一個參考,也願望年夜家多多支撐。