这可能是一个通用的OOP问题.我想根据它们的用法在接口和抽象类之间进行一般性比较.
什么时候想要使用接口?何时想要使用抽象类?
我被问到一个问题,我想在这里查看我的答案.
问:在哪种情况下扩展抽象类而不是实现接口更合适?
答:如果我们使用模板方法设计模式.
我对么 ?
如果我无法清楚地陈述问题,我很抱歉.
我知道抽象类和接口之间的基本区别.
1)当需求需要在特定操作的每个子类中实现相同的功能(实现方法)和其他一些操作的不同功能(仅方法签名)时,使用抽象类
2)如果需要将签名设置为相同(并且实现不同),请使用接口,以便您可以遵守接口实现
3)我们可以扩展一个抽象类的最大值,但可以实现多个接口
重申一个问题:除了上面提到的那些之外,还有其他任何场景,具体我们需要使用抽象类(一个是模板方法设计模式在概念上仅基于此)吗?
接口与抽象类
在这两者之间做出选择真的取决于你想做什么,但幸运的是,对我们来说,Erich Gamma可以帮助我们一点.
一如既往地存在权衡,接口为您提供基类的自由,抽象类使您可以自由地在以后添加新方法. - Erich Gamma
你无法在不改变代码中的许多其他东西的情况下更改接口,因此避免这种情况的唯一方法是创建一个全新的接口,这可能并不总是一件好事.
Abstract classes应主要用于密切相关的对象.Interfaces更好地为不相关的类提供通用功能.
可能重复:
抽象类和接口类?
Java:接口/抽象类/抽象方法
在Java中,抽象类实现了对接口的任何使用.我知道接口的一个优点是,如果我们实现一个接口,那么我们也可以扩展另一个类.Java中是否有任何其他用途或优势?
在采访中我被问到以下问题.我试着回答这个问题,但我想要问题的确切答案.
如果我可以将Abstract类模拟为Interface,为什么java提供了Interface?
这意味着如果在Abstract类中我可以将所有方法标记为抽象,然后抽象类将作为接口工作,那么为什么我需要接口.
任何人都可以简要解释一下.
我们知道我们只能声明方法签名,也不能创建接口的实例.那么我们为什么需要界面 不必要加载到JVM中.这也是一种性能下降.我们正在创建接口和几个实现该接口的类,并定义接口的所有方法.实际上我们从这个界面取得了什么.能不能给我一些例子.