new和 override之间的差异是什么?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (62)

想知道以下几点之间有什么区别:

案例1:基类

public void DoIt();

案例1:继承类

public new void DoIt();

案例2:基类

public virtual void DoIt();

Case 2: Inherited class

public override void DoIt();

根据我所运行的测试,案例1和2似乎都有相同的效果。有什么不同吗,还是首选的方法?

提问于
用户回答回答于

可以:

public class Base
{
    public virtual void DoIt()
    {
    }
}

public class Derived : Base
{
    public override void DoIt()
    {
    }
}

Base b = new Derived();
b.DoIt();                      // Calls Derived.DoIt

然后

public class Base
{
    public virtual void DoIt()
    {
    }
}

public class Derived : Base
{
    public new void DoIt()
    {
    }
}

Base b = new Derived();
Derived d = new Derived();

b.DoIt();                      // Calls Base.DoIt
d.DoIt();                      // Calls Derived.DoIt
用户回答回答于

virtual:指示方法可能被继承者覆盖。

override::重写基类中的虚拟方法的功能,提供不同的功能。

new生皮最初的方法(不一定是虚拟的)提供了不同的功能。

隐藏方法时,仍然可以通过向上转换到基类来访问原始方法。

所属标签

可能回答问题的人

  • 红双喜经典VS中华

    1 粉丝0 提问8 回答
  • LemonLu

    社区 · 运营 (已认证)

    45 粉丝0 提问4 回答
  • 13火麒麟

    0 粉丝0 提问4 回答
  • 吉_Gi

    0 粉丝3 提问3 回答

扫码关注云+社区