Java 中的抽象类与接口
我被问到一个问题,我想在这里得到我的答案审查。
问:在哪种情况下,扩展抽象类比实现接口更合适?
一个:如果我们使用模板方法设计模式。
我说的对吗?
如果我不能清楚地说明这个问题,我很抱歉。
我知道抽象类和接口之间的基本区别。
1)当需求如此之大时,使用抽象类,我们需要在每个子类中为特定操作实现相同的功能(实现方法),并为其他一些操作实现不同的功能(仅方法签名)
2)使用接口,如果需要把签名放到一样(和实现不同),这样就可以符合接口实现
3)我们可以扩展一个抽象类的最大值,但可以实现多个接口
重申以下问题:除了上面提到的那些场景之外,还有其他场景需要使用抽象类(一个是看到模板方法设计模式在概念上仅基于此)?
接口与抽象类
在这两者之间进行选择实际上取决于您想做什么,但幸运的是,Erich Gamma可以帮助我们一点。
与往常一样,存在权衡,接口为您提供了有关基类的自由,抽象类使您以后可以自由地添加新方法。– 埃里希·伽玛
你不能在不改变代码中的许多其他东西的情况下去改变一个接口,所以避免这种情况的唯一方法是创建一个全新的界面,这可能并不总是一件好事。
Abstract classes
应主要用于密切相关的对象。 更擅长为不相关的类提供通用功能。Interfaces