我正在在线阅读一些代码,其中有人实现了以下类:IMapObj
是常规接口,AbstractMapObj
是从该接口派生的,许多地图对象是从{{1 }}。
在他的所有代码中,他指的是AbstrsctMapObj
而不是IMapObj
。
使用接口和而不是抽象类的好处是什么?不用说,没有其他类从AbstractMapObj
派生,只有IMapObj
。
答案 0 :(得分:4)
使用这两种方法只有一个原因,那就是抽象类可以提供功能的 some 或 all 的默认实现。可以轻松模拟该接口以进行测试。
答案 1 :(得分:3)
使用接口和抽象类而不是抽象类有什么好处?
在发布的示例中,似乎没有真正的理由使用抽象类。在其他情况下,抽象类可以为接口实现的子集提供通用基础。通过该接口,可以为其余应用程序/库提供更稳定/通用的抽象。
通常 I 只会使用一个抽象类来共享一个公共实现,而不是作为一个接口定义-但这只是我的偏爱。人们使用许多不同的样式和样式。