C#new隐藏父类方法
C#new隐藏父类方法
Child child = new Child();
child.A();
child.B();
Parent p = child as Parent;//将child转型为一个parent
p.A();
p.B();
Console.Read();
public class Parent
{
public void A()
{
Console.WriteLine("父类newA");
}
public virtual void B()
{
Console.WriteLine("父类虚B");
}
}
public class Child : Parent
{
public new void A()
{
Console.WriteLine("子类newA");
}
public override void B()
{
Console.WriteLine("子类虚B");
}
}
重写(virtaul)时,定义的变量为父类或子类, 赋值为子类时. 皆调用子类的重写方法;(会从子类中查找有重写则调用, 没则调用基类方法)
隐藏(new)时,定义的变量为父类则调用父类的方法(不管赋值是子类还是父类),定义的变量为子类则调用子类的方法。(使用场景: 当子类想取的一方法名称与父类相同时, 可以使用. 子类的方法与父类的方法相对来说是没有直接的关系(继承,重写==). )

浙公网安备 33010602011771号