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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© cancle 中级黑马   /  2014-3-27 00:22  /  942 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 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属于多态么?它虽然指向子类,但调用不到子类的方法。


评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

1 个回复

倒序浏览
new 修饰符:在用作修饰符时,new 关键字可以显式隐藏从基类继承的成员
我的理解 不属于多态
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马