【发布时间】:2020-07-06 02:02:28
【问题描述】:
我正在网上阅读一些代码,其中有人实现了以下类:IMapObj 是一个普通接口,AbstractMapObj 派生自该接口,还有许多地图对象派生自 AbstrsctMapObj。
在他的所有代码中,他指的是IMapObj,而不是AbstractMapObj。
使用接口和抽象类而不只是抽象类有什么好处?不用说没有其他类派生自IMapObj,只有AbstractMapObj。
【问题讨论】:
-
因为没有多重继承?
-
@UweKeim 代码无论如何都不包含多重继承。此外,
IMapObj中包含的属性可以放入AbstractMapObj,因为这是唯一使用它们的地方。 -
在这种特殊情况下,听起来可能没有意义。
-
"... 派生自那个接口" 第一个错误的转折。它实现接口。但我赞同 Jamie:在所描述的结构中,它有点过于流畅了。
-
可能这是在您将实现放入接口之前,这就是为什么有一个抽象类(包括通用实现)。至于为什么会有一个接口,因为接口定义了一个精确的 API 并允许解耦而不是让东西依赖于抽象类。
标签: c# interface abstract-class derived-class