黑马程序员技术交流社区

标题: 多态与new [打印本页]

作者: cancle    时间: 2014-3-27 00:22
标题: 多态与new
本帖最后由 cancle 于 2014-3-27 00:26 编辑
  1. class Program
  2.     {
  3.         static void Main(string[] args)
  4.         {
  5.             Person p = new China();
  6.             p.SayHi();
  7.             Console.ReadKey();
  8.         }
  9.     }
  10.     public class Person
  11.     {
  12.         public void SayHi()
  13.         {
  14.             Console.WriteLine("我是父类");
  15.         }
  16.     }
  17.     public class China : Person
  18.     {
  19.         public new void SayHi()
  20.         {
  21.             Console.WriteLine("我是子类");
  22.         }
  23.     }
复制代码

多态就是在同一个方法中不同的类有不同的实现体。它包括重写和重载。
在类中new作为修饰符时,表示隐藏父类的继承成员。
像上面代码:p指向的对象是子类对象,当调用子类的方法时由于new隐藏了方法,所以没有找到SayHi的方法,根据继承链p就调用了父类的方法,所以结果是"我是父类"。
但new属于多态么?它虽然指向子类,但调用不到子类的方法。



作者: cmcm2014    时间: 2014-3-27 01:47
new 修饰符:在用作修饰符时,new 关键字可以显式隐藏从基类继承的成员
我的理解 不属于多态




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