Reg*_*ser 21 java oop abstract-class interface
在Java中,您可以创建仅包含抽象方法的抽象类.另一方面,您可以创建一个声明相同方法的接口.既然如此,你可以使用抽象类而不是接口吗?
Pau*_*and 13
在某些情况下,您可以使用抽象类而不是接口.但是,这样做几乎不是一个好主意.通常,您应该使用以下规则:
使用抽象类的另一个"问题"是,您可以不再实现mixins,即可以实现多个接口,但是您只能扩展一个抽象类.
seh*_*seh 11
这里的答案中缺少的一点是谁将实现界面的想法.
如果组件想要将抽象类型的实例返回给其调用者,其中具体类型在内部定义并且对调用者隐藏,则使用接口.相反,如果你的组件消耗或接受抽象类型的实例,它的调用者必须实现的抽象类是通常是更好的选择.
预期进化和维护二进制兼容性提示了这里的规模.使用抽象类,您可以添加方法,如果提供基本实现,抽象类的现有实现将继续正常工作.使用接口,添加方法会破坏二进制兼容性,因为没有现有的实现可以继续正确编译而无需更改以定义新方法.
在Apache的仙人掌项目具有良好的讨论,就如何解决这些义务.
要回答你的问题,是的,你可以使用抽象类(不提供实现)而不是接口,但我会考虑这种不好的做法:
我希望在你希望提供类的部分实现的情况下更多地使用抽象类,可能会将某些行为委托给具体的子类实现.
| 归档时间: |
|
| 查看次数: |
10292 次 |
| 最近记录: |