<分区>
我已经看过很多关于抽象类和接口(interface)的例子,但我不知道这样做的用途,因为它们都在做同样的工作。谁能给我一个简单的例子来解开这个谜题
<分区>
我已经看过很多关于抽象类和接口(interface)的例子,但我不知道这样做的用途,因为它们都在做同样的工作。谁能给我一个简单的例子来解开这个谜题
最佳答案
首先,修订基本差异:-
在 Java 接口(interface)中声明的变量默认是最终的。抽象类可以包含非最终变量。
默认情况下,Java 接口(interface)的成员是公共(public)的。 Java 抽象类可以具有类成员的常见风格,如私有(private)、 protected 等。
Java 接口(interface)应该使用关键字“implements”来实现;应使用关键字“extends”扩展 Java 抽象类。
一个接口(interface)只能扩展另一个Java接口(interface),一个抽象类可以扩展另一个Java类并实现多个Java接口(interface)。
一个 Java 类可以实现多个接口(interface),但它只能扩展一个抽象类。 接口(interface)是绝对抽象的,不能实例化; Java 抽象类也不能实例化,但如果存在 main() 则可以调用。
与 java 抽象类相比,java 接口(interface)速度较慢,因为它需要额外的间接访问。
Consider using abstract classes if any of these statements apply to your situation:
您想在几个密切相关的类之间共享代码。 您希望扩展您的抽象类的类具有许多公共(public)方法或字段,或者需要 public 以外的访问修饰符(例如 protected 和 private)。
您想声明非静态或非最终字段。这使您能够定义可以访问和修改它们所属对象的状态的方法。
Consider using interfaces if any of these statements apply to your situation:
您希望不相关的类会实现您的接口(interface)。例如,Comparable 和 Cloneable 接口(interface)由许多不相关的类实现。
您想指定特定数据类型的行为,但不关心谁实现了它的行为。
您想利用类型的多重继承。
(摘自Oracle官方教程)
关于java - java中抽象类和接口(interface)的具体使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24445247/