为了账号安全,请及时绑定邮箱和手机立即绑定

请求高手指点代码的结果谢谢

请求高手指点代码的结果谢谢

杨魅力 2018-09-12 04:06:44
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();


查看完整回答
反对 回复 2018-09-24
  • 1 回答
  • 0 关注
  • 348 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信