![09 19 面向对象抽象类和接口的区别 rec](https://i.ytimg.com/vi/rWc4ivMiUSA/hqdefault.jpg)
内容
主要区别
抽象类和接口之间的主要区别在于Java接口的过程本质上是抽象的,不能具有应用程序。概括地说,接口实际上是一个契约,当我们谈论接口时,它适用于方法没有主体的情况,它只是一种模式。虽然抽象类基本上是使用成本很高的类。抽象类和接口是一个完全不同的概念,这是两个不同的事物,但是有时它们的实现非常相似。
什么是抽象类?
程序员没有完全隐含一个抽象类。抽象类可以具有一个或多个抽象方法。它们对于对类分组或排序进行建模很有用,并且在进行分组或排序时,程序员在看完需求后才知道必须构建什么。无法完全依赖抽象类,因为它缺少某些部分。该参数背后的要点是,尽管抽象类具有方法标题但没有主体,但它严格地是面向对象的。当我们谈论抽象类时,两个类之间有很强的联系,因为这些类倾向于相互获取或继承。
什么是接口?
相反,当我们谈论接口时,则接口本身与类之间的关系或通信暗示该接口不像抽象类中那样牢固。 Java类可以实现许多接口,但可以从单个抽象类继承。因此,这意味着当您想一次隐含许多交互时,接口就是您的事。除此以外,即使您不希望API暂时更改,接口也是最适合您的选择。接口实际上是两个不同对象之间的契约。简而言之,界面围绕功能展开。
关键差异
- 抽象类是面向对象的,而接口是面向函数的。
- 如果希望API保持一段时间不变,则可以选择接口而不是抽象类。
- 通过暗示多个接口可以获得多重继承。在抽象类中,您不能获得多个继承。
- 如果您希望将来有一种感觉,则需要在工作中添加方法,那么就选择了抽象类,而不是接口。
- 抽象类提供了一个通用的基类应用程序,但是在接口中却没有发生这种情况。
- 在接口中,您实现的所有方法都是公共的,但在抽象类中,您也可以应用一些非公共的方法。
- 构造函数不在接口中,但确实在抽象类中发生。
- 抽象类的完整成员可以是静态的,但不能是接口的。