【发布时间】:2020-02-20 20:21:06
【问题描述】:
interface Ia
{
void m1();
void m2();
}
interface Ib
{
void m3();
void m4();
}
这里如何在一个类中实现m1和m3?
【问题讨论】:
-
你必须全部实现。如果我说我是
Ia和Ib,那么我必须能够做到这四个(或者我在撒谎——编译器会抱怨这是可以理解的)。 此外,如果您使用有意义的接口和方法名称,这些类型的问题更容易讨论。 -
你尝试过什么,失败的原因是什么?
-
您无法选择要实现的接口成员。实现类型必须为接口的所有成员提供一个实现(即使该类型是抽象的,它也必须至少提供一个抽象成员)。接口类似于合约,如果代码可以选择要实现的合约的哪些部分,它将不再是有效的合约。
-
如果你只使用一个,你应该将它们分成多个接口。您可以同时实现两者并抛出
NotSupportedException(),但这是一种不好的编程习惯,因为它违反了 SOLID 原则。 -
接口是一个CONTRACT,你必须实现接口中的所有方法。接口是实现多态性的一种方式。更多信息:docs.microsoft.com/en-us/dotnet/csharp/language-reference/…