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# 函数覆盖总结学习(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。
上一篇:分享C#中几个可用的类
栏 目:C#教程
下一篇:浅析C#中StringBuilder类的高效及与String的对比
本文标题:C# 函数覆盖总结学习(推荐)
本文地址:https://www.xiuzhanwang.com/a1/C_jiaocheng/6510.html
您可能感兴趣的文章
- 01-10c# ArrayList的使用方法小总结
- 01-10C#实现子窗体与父窗体通信方法实例总结
- 01-10C#获取客户端相关信息实例总结
- 01-10C#中Arraylist的sort函数用法实例分析
- 01-10C#网页跳转方法总结
- 01-10解析C#中的私有构造函数和静态构造函数
- 01-10详解C#编程中构造函数的使用
- 01-10全面解读C#编程中的析构函数用法
- 01-10C#提高编程能力的50个要点总结
- 01-10C#委托与事件初探
阅读排行
本栏相关
- 01-10C#通过反射获取当前工程中所有窗体并
- 01-10关于ASP网页无法打开的解决方案
- 01-10WinForm限制窗体不能移到屏幕外的方法
- 01-10WinForm绘制圆角的方法
- 01-10C#实现txt定位指定行完整实例
- 01-10WinForm实现仿视频播放器左下角滚动新
- 01-10C#停止线程的方法
- 01-10C#实现清空回收站的方法
- 01-10C#通过重写Panel改变边框颜色与宽度的
- 01-10C#实现读取注册表监控当前操作系统已
随机阅读
- 01-10SublimeText编译C开发环境设置
- 01-11Mac OSX 打开原生自带读写NTFS功能(图文
- 04-02jquery与jsp,用jquery
- 01-10C#中split用法实例总结
- 01-10使用C语言求解扑克牌的顺子及n个骰子
- 01-10delphi制作wav文件的方法
- 01-11ajax实现页面的局部加载
- 08-05dedecms(织梦)副栏目数量限制代码修改
- 08-05织梦dedecms什么时候用栏目交叉功能?
- 08-05DEDE织梦data目录下的sessions文件夹有什