C#——多态与new关键字
多态表示继承类覆盖基类中的virtual(虚拟),abstract(抽象)成员;用关键字override实现。
如下:
class Base
{
public virtual void Print()
{
console.writeline("This is in Base");
}
}
class Children:Base
{
public override void Print()
{
console.writeline("This is in Children");
}
}
当进行如下操作时:
Base a=new Children();
a.Print();
执行的是Children.Print();
如果需要调用基类中的Print方法,则可以在继承类中调用
base.Print();
new则不然,new是用来隐藏基类中的普通成员,避免出现编译错误
如下:
class Base
{
public void Print()
{
console.writeline("This is in Base");
}
}
class Children:Base
{
public new void Print()
{
console.writeline("This is in Children");
}
}
如果缺少new关键字,则会出现编译错误,但是这并不能实现多态功能,如果进行如下操作:
Base a=new Children();
a.Print();
执行的是Base.Print();
以上便是个人认为的多态与new关键字之间的差别。
浙公网安备 33010602011771号