抽象类和接口的对比:
| 抽象类 | 接口 | |
| 默认的方法实现 | 可以拥有默认的方法实现 | 接口完全是抽象的,不存在方法的实现 |
| 实现 | 子类使用extends关键字来继承抽象类。如果子类不是抽象类的话,它需要提供抽象类中所有声明的方法的实现。 | 子类使用关键字implements来实现接口。它需要提供接口中所有声明的方法的实现 |
| 构造方法 | 可以有构造方法 | 不能有构造方法 |
| 和普通类的区别 | 只是抽象类不能实例化 | 不能实例化,和普通类也完全不同 |
| 访问修饰符 | 可以用public、protected、default | 只能是public |
| main方法 | 可以拥有main方法,并且可以运行 | 不可以有main方法 |
| 继承 | 一个类只能继承一个抽象类、可以实现多个接口 | 一个接口可以继承多个父接口,但是不能继承抽象类 |
| 普通成员变量 | 可以拥有 | 不可以拥有普通成员变量 |
| 静态方法 | 可以拥有 | 不可以拥有 |
| 普通方法 | 可以拥有 | 不可以拥有 |
使用场景:
- 优先使用接口
- 接口用于规范,抽象类用于共性
- 如果需要实现多继承,就应该使用接口。
本文详细对比了抽象类和接口在Java中的不同之处,包括默认方法实现、构造方法、访问修饰符、main方法、继承、普通成员变量、静态方法、普通方法及使用场景等关键信息。
2万+

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



