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)
在没有实际使用override关键字的情况下覆盖/隐藏基类的行为是一个好习惯吗?
你不能 "覆盖"基本方法,因为它不是virtual.你所能做的只是隐藏它.它很少是一种"良好实践",但没有任何东西可以阻止它,所以它是否"好"是非常具有背景性的.
在这里使用新关键字是否更好?
使用new不会改变最轻微的功能.关键字在那里,以便您可以明确地告诉编译器"我知道我隐藏了一个基本成员".无论您是否使用,行为都是相同的new.
| 归档时间: |
|
| 查看次数: |
79 次 |
| 最近记录: |