抽象类和接口都用于实现抽象,我们可以声明抽象方法。抽象类和接口都无法实例化。
abstract class表示的是"is a"关系,interface表示的是"like a"关系。
| 接口 | 抽象类 | |
|---|---|---|
| 关键字 | implements | extends |
| 继承 | 接口支持多重继承。 | 抽象类不支持多重继承。 |
| 变量 | 接口只有静态和最终变量。 (默认 public static final) | 抽象类可以有final,non-final,static和non-static变量。 |
| 方法 | 接口方法默认修饰符是public,你不可以使用其它修饰符。 接口只能有抽象方法。Java 8开始,也可以有默认和静态方法。 ( 默认 public abstract) | 抽象方法可以有public、protected和default这些修饰符 抽象类可以有抽象和非抽象方法。 |
| 构造器 | 接口不能有构造器 | 而抽象类可以有构造器 |
| 执行速度 | 慢 | 快 |
| 相互实现 | 接口不能提供抽象类的实现。 | 抽象类可以提供接口的实现。 |
示例:
public abstract class Shape {
public abstract void draw();
}
public interface Drawable {
void draw();
}
本文详细对比了抽象类和接口在Java中的应用,包括它们的关键字、继承方式、变量类型、方法定义、构造器存在与否、执行速度以及相互实现的关系。通过具体示例,加深了对两者特性和使用场景的理解。

被折叠的 条评论
为什么被折叠?



