博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
new、override关键字
阅读量:5946 次
发布时间:2019-06-19

本文共 1147 字,大约阅读时间需要 3 分钟。

1.如果我想彻底覆盖父类的方法,此时可以使用override

.假有classB继承自classA,代码如下:

public class B : A    {        public bool _flag;        public B(bool flag)        {            _flag = flag;        }        protected override void Write()        {            Console.Write("Class B");        }        public override void SayHello()        {            if (_flag)            {                base.SayHello();            }            else            {                this.Write();            }        }    }    public class A    {        protected virtual void Write()        {            Console.Write("Class A");        }        public virtual void SayHello()        {            this.Write();        }    }
View Code

这个时候实例化classB,打印输出:

static void Main(string[] args){    B b = new B(false);    //B b = new B(true);    b.SayHello();    Console.ReadKey();}
View Code

此时无论传入的flag值是true还是false执行的都是classA的Write()方法。这说明override会覆盖父类的同名方法,相当于被替代了。

2.如果我不想覆盖父类的方法,他们井水不犯河水,可以使用new关键字,显式影藏父类的方法。代码如下

new protected void Write(){    Console.Write("Class B");}
View Code

这个时候当flag为true执行的是classA的write()方法;flag为false执行的是classB的方法。

 

转载于:https://www.cnblogs.com/coce/p/7103495.html

你可能感兴趣的文章
ios 打包上传Appstore 时报的错误 90101 90149
查看>>
Oracle推出轻量级Java微服务框架Helidon
查看>>
密码概述
查看>>
jQuery的技巧01
查看>>
基于泛型实现的ibatis通用分页查询
查看>>
gopacket 使用
查看>>
AlertDialog对话框
查看>>
我的友情链接
查看>>
linux安全---cacti+ntop监控
查看>>
鸟哥的linux私房菜-shell简单学习-1
查看>>
nagios配置监控的一些思路和工作流程
查看>>
通讯组基本管理任务三
查看>>
赫夫曼编码实现
查看>>
html页面显示div源代码
查看>>
Centos下基于Hadoop安装Spark(分布式)
查看>>
3D地图的定时高亮和点击事件(基于echarts)
查看>>
接口由40秒到200ms优化记录
查看>>
java 视频播放 多人及时弹幕技术 代码生成器 websocket springmvc mybatis SSM
查看>>
Activiti6.0,spring5,SSM,工作流引擎,OA
查看>>
使用Tooltip会出现一个问题,如果行上出现复选框
查看>>