| 抽象类 | 接口 | |
|---|---|---|
| 声明关键字 | abstract class | interface |
| 方法类型 | abstract方法访问修饰符 默认public, 也可以protected, default; 非abstract方法 如果带final表示不能被子类重写 | 通常public abstract,java 8 开始 允许default方法 |
| 参数类型 | 任意 | 只能是public static final |
| 构造器 | 可以有构造器(在子类的构造器中调用), 不能实例化 | 接口不能有构造器, 不能实例化 |
| 如何继承/实现 | extends 如果子类是非抽象类, 必须实现父类所有abstract方法; | implements 必须实现所有abstract方法 |
| 多继承/实现 | 子类只能继承一个父类, 可以实现多个接口 | 接口可以实现一个或多个其他接口 |
| 速度 | 比接口速度快 | 需要到实现类中寻找实现方法,速度慢 |
| main方法 | 有,可以运行 | 没有 |
| 新增方法 | 父类中新增的方法, 提供默认实现, 子类不需要新增 | 接口中新增default方法, 带实现, 实现类不用动 |
| 关系 | is a | has a/ like a |
| 理解 | 概念抽象 | 行为抽象 |
Java 接口 和 抽象类 的区别比较
于 2022-01-21 09:58:44 首次发布
本文详细对比了抽象类和接口的特点及使用场景。探讨了两者在声明关键字、方法类型、参数类型等方面的差异,并分析了它们在继承、实现、速度等方面的不同。

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



