interface A1 {
void jj();
void ff() { /* */}
}
class B1 : A1 {
public void jj() { }
void ff() { /* */}
}
我正在 B1
类中实现两种方法:jj()
在接口 A1
中没有默认实现,而 ff()
在接口 A1
中有默认实现。
我想知道为什么在实现接口方法时不使用 override 关键字,因为接口中的这些方法是抽象或虚拟的?
jj: 抽象
ff: 虚拟
10年前,你可以说这是因为接口没有默认实现,所以我们不需要覆盖,而是实现。但是,从 C# 8.0 开始,可以使用默认实现,那么为什么我们不必须使用 override 关键字呢?
override
,那么所有使用接口的先前代码都将无效。如果这是可选的事情,那么为什么要费心呢? - Flydog57