关于override重写与new隐藏父类成员的
class A
{
public virtual void aa()
{
Console.WriteLine("aaaaaaaaaa");
}
}
class B:A
{
public override void aa()
{
Console.WriteLine("bbbbbbbbbb");
}
static void Main()
{
A a=new B();
a.aa();
}
}
输出bbbbbbbbbb,为什么将override换成new就输出aaaaaaaaaa?
知道new是隐藏/覆盖父类方法的作用,可以还是不理解这题,能通俗点说说吗
------解决思路----------------------
本人vb。常用的多,在vb中没有new修饰符。刚才看了下,
原来是这样:
在用作修饰符时,new 关键字可以显式隐藏从基类继承的成员。隐藏继承的成员时,该成员的派生版本将替换基类版本。虽然可以在不使用 new 修饰符的情况下隐藏成员,但会生成警告。如果使用 new 显式隐藏成员,则会取消此警告,并记录要替换为派生版本这一事实。