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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

关于C#中,继承类重写与隐藏基类方法的区别是什么?

2 个回复

倒序浏览
使用Override修饰符对方法进行重写时,基类中的方法必须是Abstract或Virtual的,这时使用override修饰符,就可以修改基类中抽象或虚方法的实现。

隐藏基类中的方法一般是使用new关键字,并不要求基类中的方法是Abstract或Virtual,可以使用new关键字重写基类中的方法。
回复 使用道具 举报
本帖最后由 范国伟 于 2013-8-6 23:22 编辑

重写是对基类中方法的修改,隐藏是不用基类方法 有重新定义了一个同名的方法,这个方法基类无法调用,是属于子类的方法。
  1. class Program
  2.     {
  3.         static void Main(string[] args)
  4.         {
  5.             Person p1 = new Son(); //声明的是基类对象  指向派生类
  6.             p1.Say();//调用的是子类方法
  7.             Person p2 = new Daughter();
  8.             p2.Say(); //调用的是基类方法
  9.             Console.ReadKey();
  10.         }
  11.     }
  12.     public class Person
  13.     {
  14.         public virtual void Say() //父类中的虚方法
  15.         {
  16.             Console.WriteLine("我是人");
  17.         }
  18.     }
  19.     public class Son :Person
  20.     {
  21.         public override void Say() //子类重写父类的虚方法
  22.         {
  23.             Console.WriteLine("我是son");
  24.         }
  25.    
  26.     }
  27.     public class Daughter :Person
  28.     {
  29.         public new void Say() //子类隐藏父类方法
  30.         {
  31.             Console.WriteLine("我是女儿");
  32.         }

  33.     }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马