C#:通过继承隐藏实现是否可以?

mba*_*i23 2 c# oop inheritance

鉴于我有以下代码:

interface IBase {
    void DoStuff(double x, double y);
}

class Base : IBase {
    public void DoStuff(double x, double y) { Console.WriteLine(x + y); }
}
Run Code Online (Sandbox Code Playgroud)

在没有实际使用override关键字的情况下覆盖/隐藏基类的行为是一个好习惯吗?下面的代码中是否有任何隐藏的陷阱?

class Derived : Base {
    public void DoStuff(double x, double y) { Console.WriteLine(x * y); }
}
Run Code Online (Sandbox Code Playgroud)

new这里使用关键字是否更好?像这样:

class Derived : Base {
    public new void DoStuff(double x, double y) { Console.WriteLine(x * y); }
}
Run Code Online (Sandbox Code Playgroud)

D S*_*ley 5

在没有实际使用override关键字的情况下覆盖/隐藏基类的行为是一个好习惯吗?

不能 "覆盖"基本方法,因为它不是virtual.你能做的只是隐藏它.它很少是一种"良好实践",但没有任何东西可以阻止它,所以它是否"好"是非常具有背景性的.

在这里使用新关键字是否更好?

使用new不会改变最轻微的功能.关键字在那里,以便您可以明确地告诉编译器"我知道我隐藏了一个基本成员".无论您是否使用,行为都是相同的new.