A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

子类和父类存在同名但没有重写关系的方法的时候,那么会调用哪个方法?

2 个回复

倒序浏览
这种要判断程序运行过程的问题,其实自己亲自写代码就明白了。你可以创建一个父类和子类,然后建立不同的对象,运行一下就会出来。我刚写的代码如下:
  1. class Father           //父类
  2.     {
  3.         public void Show()
  4.         {
  5.             Console.WriteLine("调用父类方法!");
  6.         }
  7.     }

  8.     class Son : Father       //子类
  9.     {
  10.         public void Show()   //子类和父类的方法重名的话,这里会有一个警告,但程序可以运行
  11.         {
  12.             Console.WriteLine("调用子类方法!");
  13.         }
  14.     }

  15.     class Program
  16.     {
  17.         static void Main(string[] args)
  18.         {
  19.             Father person1 = new Father();    //分别创建不同的对象来调用它们的方法
  20.             person1.Show();

  21.             Father person2 = new Son();
  22.             person2.Show();

  23.             Son person3 = new Son();
  24.             person3.Show();

  25.             Console.ReadKey();
  26.         }
  27.     }
复制代码
程序运行结果如下:

子类和父类.jpg (8.61 KB, 下载次数: 48)

子类和父类.jpg
回复 使用道具 举报 2 0
如果是派生类变量的话调用的子类方法,如果是父类变量的话调用的是父类的方法,如果是同名不重写建议在子类方法声明中使用new关键字!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马