主要区别
抽象类与接口的主要区别在于Java接口的过程本质上是抽象的,不能有应用程序。广义地说,接口实际上是一个契约,当我们谈论接口时,它适用于方法没有主体,它只是一个模式。而抽象类基本上是使用成本较高的类。抽象类和接口是一个完全不同的概念,这是两个不同的东西,但有时它们的实现非常相似。
什么是抽象类(abstract class)?
抽象类并不是程序员完全隐含的。抽象类可以有一个或多个抽象方法。它们对于建模类分组或排名非常有用,当这一过程被执行时,程序员会在看到需求之后得到构建什么的想法。抽象类不能完全依赖,因为它缺少某些部分。这一论点背后的主要观点是,抽象类严格面向对象,尽管它有一个方法标题,但没有正文。当我们谈论抽象类时,两个类之间有着很强的联系,因为这两个类倾向于从另一个类获得或继承。
什么是接口(interface)?
相反,当我们谈论接口时,接口本身与表示接口的类之间的关系或通信不如抽象类中的强。Java类可以实现许多接口,但可以从单个抽象类继承。所以,这意味着当你想同时暗示许多交互时,界面就是你的东西。除此之外,即使您暂时不想更改API,接口也是您的最佳选择。接口实际上是两个不同对象之间的契约。简而言之,界面围绕着功能。
主要区别
- 抽象类是面向对象的,而接口是面向函数的。
- 当你想让API保持一段时间不变时,你就选择了接口而不是抽象类。
- 通过暗示多个接口可以获得多个继承。在抽象类中,不能获得多个继承。
- 如果将来需要在工作中添加方法,那么选择抽象类,而不是接口。
- 抽象类提供了一个公共的基类应用程序,但在接口中没有发生这种情况。
- 在接口中,您实现的所有方法都是公共的,但是在抽象类中,您也可以应用一些非公共方法。
- 构造函数不在接口中,但它们确实出现在抽象类中。
- 抽象类的完整成员可以是静态的,但不是接口的。