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# 函數籠罩總結進修(推舉)就是小編分享給年夜家的全體內容了,願望能給年夜家一個參考,也願望年夜家多多支撐。