当前位置: 代码迷 >> C# >> c#基础语法的题解决方法
  详细解决方案

c#基础语法的题解决方法

热度:99   发布时间:2016-05-05 02:35:08.0
c#基础语法的题
关于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是隐藏/覆盖父类方法的作用,可以还是不理解这题,能通俗点说说吗
------解决思路----------------------
引用:
Quote: 引用:

各位啊:什么隐藏不隐藏的,new 就是按new后面的类名新生个对象。 至于这个对象是什么。

a.aa到底执行 A的aa还是B的aa,那就a到底是A还是B,这里实际上a是B,所以最先还是执行B的aa,执行B的aa前才看B的aa是override,那么就执行B。aa本生就行了。这就是面向对象。

别傻了,人家说的是方法用的new 不是new B


本人vb。常用的多,在vb中没有new修饰符。刚才看了下,
原来是这样:
在用作修饰符时,new 关键字可以显式隐藏从基类继承的成员。隐藏继承的成员时,该成员的派生版本将替换基类版本。虽然可以在不使用 new 修饰符的情况下隐藏成员,但会生成警告。如果使用 new 显式隐藏成员,则会取消此警告,并记录要替换为派生版本这一事实。

  相关解决方案