重申一个问题:除了上面提到的这些情况之外,还有其他任何情况,我们特别需要使用抽象类(可以看到模板方法设计模式仅在概念上基于此)
是的,如果你使用JAXB。它不喜欢接口。你应该使用抽象类或通过泛型解决此限制。
接口:
- 一个类可以实现多个接口
- 接口根本无法提供任何代码
- 接口只能定义公共静态最终常量
- 接口无法定义实例变量
- 添加新方法会对实现类产生连锁反应(设计维护)
- JAXB无法处理接口
- 接口不能扩展或实现抽象类
- 所有接口方法都是公开的
通常,应该使用接口来定义合同(要实现什么,而不是如何实现)。
抽象类:
- 一个类最多可以扩展一个抽象类
- 抽象类可以包含代码
- 抽象类可以定义静态常量和实例常量(最终)
- 抽象类可以定义实例变量
- 修改现有抽象类代码会对扩展类产生连锁反应(实现维护)
- 向抽象类添加新方法不会对扩展类产生连锁反应
- 抽象类可以实现接口
- 抽象类可以实现私有和受保护的方法
抽象类应用于(部分)实现。它们可能是限制API合同实施方式的一种手段。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)