using System;namespace Anytao.net.My_Must_net{ class Number { public static int i = 123; public void ShowInfo() { Console.WriteLine("base class---"); } public virtual void ShowNumber() { Console.WriteLine(i.ToString()); } } class IntNumber : Number { new public static int i = 456; public new virtual void ShowInfo() { Console.WriteLine("Derived class---"); } public override void ShowNumber() { Console.WriteLine("Base number is {0}", Number.i.ToString()); Console.WriteLine("New number is {0}", i.ToString()); } } class Tester { public static void Main(string[] args) { Number num = new Number(); num.ShowNumber(); IntNumber intNum = new IntNumber(); intNum.ShowNumber(); Number number = new IntNumber(); //究竟调用了谁? number.ShowInfo(); //究竟调用了谁? number.ShowNumber(); } }}为什么是这样的结果求高手指点下后面三句代码不是很清楚谢谢高手指点
1 回答
qq_笑_17
TA贡献1818条经验 获得超7个赞
Number number = new IntNumber();
//究竟调用了谁? 调用基类ShowInfo new的作用是继承类向父类隐藏重写方法。所以是调用父类的ShowInfo 方法
number.ShowInfo();
//究竟调用了谁? 这个是调用子类的方法,因为override已经重写了父类方法,所以调用子类的ShowNumber
number.ShowNumber();
- 1 回答
- 0 关注
- 363 浏览
添加回答
举报
0/150
提交
取消