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