日期:2014-05-18 浏览次数:20942 次
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类中实现的方式进行
}