日期:2014-05-18 浏览次数:20787 次
class A { public override void SomeFunction() { Console.WriteLine("A' SomeFunction"); } } class B { public override void SomeFunction() { Console.WriteLine("B' SomeFunction"); } } class Program { B objB = new B(); objB.SomeFunction(); //对象的身份为B,输出结果就按B类中的结果输出 ((A)objB).SomeFunction(); //对象的身份为A,输出结果仍然按B类中的结果输出。原因就是子类重写override了父类的方法,一旦子类对象创建完毕,无论是将其看成B类对象还是A类对象,方法执行都将按照子类中实现的方式进行 } ------------------------------------------------ class A { public override void SomeFunction() { Console.WriteLine("A' SomeFunction"); } } class B { public new void SomeFunction()//隐藏 { Console.WriteLine("B' SomeFunction"); } } class Program { B objB = new B(); objB.SomeFunction(); //对象的身份为B,输出结果就按B类中的结果输出 ((A)objB).SomeFunction(); //对象的身份为A,输出结果按A类中的结果输出。原因就是子类仅仅只是隐藏了父类的方法,一旦子类对象被其看成A类对象,方法执行都将按照A类中实现的方式进行 }