为什么使用接口和抽象而不是抽象?

时间:2020-03-25 13:53:37

标签: c# interface abstract-class derived-class

我正在在线阅读一些代码,其中有人实现了以下类:IMapObj是常规接口,AbstractMapObj是从该接口派生的,许多地图对象是从{{1 }}。

在他的所有代码中,他指的是AbstrsctMapObj而不是IMapObj

使用接口而不是抽象类的好处是什么?不用说,没有其他类从AbstractMapObj派生,只有IMapObj

2 个答案:

答案 0 :(得分:4)

使用这两种方法只有一个原因,那就是抽象类可以提供功能的 some all 的默认实现。可以轻松模拟该接口以进行测试。

答案 1 :(得分:3)

使用接口和抽象类而不是抽象类有什么好处?

在发布的示例中,似乎没有真正的理由使用抽象类。在其他情况下,抽象类可以为接口实现的子集提供通用基础。通过该接口,可以为其余应用程序/库提供更稳定/通用的抽象。


通常 I 只会使用一个抽象类来共享一个公共实现,而不是作为一个接口定义-但这只是我的偏爱。人们使用许多不同的样式和样式。