首页 > 代码库 > new、override关键字
new、override关键字
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(); } }
这个时候实例化classB,打印输出:
static void Main(string[] args) { B b = new B(false); //B b = new B(true); b.SayHello(); Console.ReadKey(); }
此时无论传入的flag值是true还是false执行的都是classA的Write()方法。这说明override会覆盖父类的同名方法,相当于被替代了。
2.如果我不想覆盖父类的方法,他们井水不犯河水,可以使用new关键字,显式影藏父类的方法。代码如下
new protected void Write() { Console.Write("Class B"); }
这个时候当flag为true执行的是classA的write()方法;flag为false执行的是classB的方法。
new、override关键字
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。