黑马程序员技术交流社区

标题: 关于C#中,继承类重写与隐藏基类方法的区别! [打印本页]

作者: hongiqnglik    时间: 2013-8-6 22:54
标题: 关于C#中,继承类重写与隐藏基类方法的区别!
关于C#中,继承类重写与隐藏基类方法的区别是什么?
作者: lvjayj    时间: 2013-8-6 23:07
使用Override修饰符对方法进行重写时,基类中的方法必须是Abstract或Virtual的,这时使用override修饰符,就可以修改基类中抽象或虚方法的实现。

隐藏基类中的方法一般是使用new关键字,并不要求基类中的方法是Abstract或Virtual,可以使用new关键字重写基类中的方法。
作者: 范国伟    时间: 2013-8-6 23:19
本帖最后由 范国伟 于 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.     }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2