黑马程序员技术交流社区
标题:
多态与new
[打印本页]
作者:
cancle
时间:
2014-3-27 00:22
标题:
多态与new
本帖最后由 cancle 于 2014-3-27 00:26 编辑
class Program
{
static void Main(string[] args)
{
Person p = new China();
p.SayHi();
Console.ReadKey();
}
}
public class Person
{
public void SayHi()
{
Console.WriteLine("我是父类");
}
}
public class China : Person
{
public new void SayHi()
{
Console.WriteLine("我是子类");
}
}
复制代码
多态就是在同一个方法中不同的类有不同的实现体。它包括重写和重载。
在类中new作为修饰符时,表示隐藏父类的继承成员。
像上面代码:p指向的对象是子类对象,当调用子类的方法时由于new隐藏了方法,所以没有找到SayHi的方法,根据继承链p就调用了父类的方法,所以结果是"我是父类"。
但new属于多态么?它虽然指向子类,但调用不到子类的方法。
作者:
cmcm2014
时间:
2014-3-27 01:47
new 修饰符:在用作修饰符时,new 关键字可以显式隐藏从基类继承的成员
我的理解 不属于多态
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2