C# virtual, base, override

网友投稿 256 2022-09-01

C# virtual, base, override

先看这样一段代码:

namespace @virtual{ class A { public void print() { Console.WriteLine("base"); } } class a :A{ public void print() { Console.WriteLine("derive"); } } class Program { static void Main(string[] args) { A p = new A(); p.print(); p = new a(); p.print(); Console.ReadKey(); } }}

output:

base

base

virtual修饰基类的print()再在子类中 override重写print(),那样才能调用派生类的方法

namespace @virtual{ class A { public virtual void print() { Console.WriteLine("base"); } } class a :A{ public override void print() { Console.WriteLine("derive"); } } class Program { static void Main(string[] args) { A p = new A(); p.print(); p = new a(); p.print(); Console.ReadKey(); } }}

output:

base

derive

它达到的效果和下面的代码是一样的:

namespace @virtual{ class A { public void print() { Console.WriteLine("base"); } } class a :A{ public void print() { Console.WriteLine("derive"); } } class Program { static void Main(string[] args) { A p = new A(); p.print(); a p1 = new a(); p1.print(); Console.ReadKey(); } }}

output:

base

derive

base则是对在派生类里对基类成员的访问。在基类数据成员或方法被子类同名成员隐藏的情况下,它能发挥巨大的作用。

namespace @base{ class A { public void print() { Console.WriteLine("base"); } } class a :A{ public void print() { Console.WriteLine("derive"); } public void fatherPrint() { base.print(); } } class Program { static void Main(string[] args) { a p1 = new a(); p1.fatherPrint(); p1.print(); Console.ReadKey(); } }}

output:

base

derive

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:C# string类常用的几种方法
下一篇:快手电商整治商户/带货达人不正当营销行为 严重违规将封禁账号!(商家违反快手电商平台规则)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~