C# 函数覆盖总结学习
覆盖类成员:通过new关键字修饰虚函数表示覆盖该虚函数。
一个虚函数被覆盖后,任何父类变量都不能访问该虚函数的具体实现。
public virtual void IntroduceMyself(){...}//父类虚函数
public new void IntroduceMyself(){...}//子类覆盖父类虚函数
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++面向对象中多态性和继承性的基石.而多态性和继承性则是面向对象语言的精髓.掌握虚函数才算是真正掌握C++语言,而C++语言中虚函数的继承覆盖与函 ...
- C++ 为什么要用覆盖(学习笔记)
长篇大论这里就不说了,举个例子class fruit{public: void func() { printf("fruit\n"); } virtual void vfunc() ...
- C++中函数重载和函数覆盖的区别
C++中经常会用到函数的重载和覆盖,二者也在很多场合都拿出来进行比较,这里我就对二者的区别做点总结: 函数重载: 函数重载指的是函数名相同.函数特征值不同的一些函数,这里函数的特征值指的是函数的参数的 ...
- UNIX环境编程学习笔记(19)——进程管理之fork 函数的深入学习
lienhua342014-10-07 在“进程控制三部曲”中,我们学习到了 fork 是三部曲的第一部,用于创建一个新进程.但是关于 fork 的更深入的一些的东西我们还没有涉及到,例如,fork ...
- Javascript函数的简单学习
第九课函数的定义与调用1:函数的定义 语法格式 function 函数名(数据类型 参数1){//function是定义函数的关键字 方法体;//statements,用于实 ...
- java中的异常处理机制_函数覆盖时的异常特点
/*注意:异常声明在函数上 异常在子父类覆盖时的体现1.子类在覆盖父类时,如果父类的方法抛出异常,那么子类的覆盖方法,只能抛出父类的异常或者异常的子类2.如果父类方法抛出多个异常,那么子类在覆盖该方法 ...
- C++多态实现(虚函数,成员函数覆盖、隐藏)
// 1.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using namespace ...
- linux 动态库 静态库 函数覆盖
本文讨论了linux动态库 静态库中函数的覆盖问题. 测试目的: 同名函数,分别打成动态库libdync_lib.so与静态库libstatic_lib.a,并把libstatic_lib.a打到另 ...
- 变量覆盖漏洞学习及在webshell中的运用
一.发生条件: 函数使用不当($$.extract().parse_str().import_request_variables()等) 开启全局变量 二.基础了解: 1.$$定义 $$代表可变变量, ...
随机推荐
- 常用UI布局
1.LinearLayout(线性布局):将布局所包含的控件在线性方向上依次排列. <1>android:orientation 指定了排列方向(垂直方向(vertical).水平方向(h ...
- Zend Framework 入门(2)—多国语言支持
如果你的项目想要支持多语言版本,那么就需要用到 Zend_Translate.Zend_Translate 的详细文档在这里,不过如果想偷懒的话,也很简单,在View Helpers 文档中介绍了如何 ...
- echo二次开发 ecshop 函数列表
lib_time.php (时间函数) gmtime() P: 获得当前格林威治时间的时间戳 /$0 server_timezone() P: 获得服务器的时区 /$0 local_mktime($h ...
- DBCP连接池原理分析及配置用法
DBCP连接池介绍 ----------------------------- 目前 DBCP 有两个版本分别是 1.3 和 1.4. DBCP 1.3 版本需要运行于 JDK 1.4-1.5 ,支持 ...
- Hadoop Configuration
Configuration的主要是加载配置文件,并储存在properties中. 细节内容不重复了,主要参考Hadoop技术内幕,Hadoop源代码,以及: http://blog.csdn.net/ ...
- Ubuntu14.04下Python3.4启动IDLE
1.在Ubuntu14.04 LTS版本中,已经自行安装了python,可以在Terminal(CTRL+ALT+T)中输入:ls /usr/bin | grep python 进行查看. 如果想运行 ...
- 双nginx(主备、主主)反向代理tomcat实现web端负载均衡
经过以前做完的产品,受前公司几位前辈技术大拿指点,来自己动手实现并总结一下web端的负载解决方法,高手请略过,个人认知有限,请各位指正错误. 下面是结构图: 我的系统环境是Fedora22(适用rea ...
- 教你利用iframe在网页中显示天气
来源:http://www.ido321.com/921.html css: 1: *{margin:0;padding:0;list-style-type:none;} 2: a,img{borde ...
- Linux服务器下没有root权限装Matlab R2013a
Matlab R2013a Unix版下载地址 注意:由于我是在单位的集群系统上装Matlab,没有root权限,故下载下来的.iso文件不能在linux下用mount命令挂载,故先在Win下解压,再 ...
- ffmpeg 研究
ffmpeg -codecs | grep mp3 可以查看ffmpeg是否把mp3编解码模块编译进去了. libmp3lame is the mp3 encoder for ffmpeg. It n ...