page contents

接口(interface)和抽象类(abstract class)的区别是什么?

轩辕小不懂 发布于 2022-08-31 09:52
阅读 879
收藏 0
分类:Java开发
4212
Nen
Nen
- 程序员

接口中的所有方法必须都是抽象的,不能有非抽象的普通方法(所有方法在接口中不能有实现);而抽象类中可以包含非抽象的普通方法。

接口中不能有构造方法,抽象类可以有构造方法。

接口中除了static、final变量,不能有其他变量,而抽象类中则不一定。

一个类可以实现多个接口,但只能继承一个抽象类。接口自己本身可以通过extends关键字扩展多个接口。

接口中的抽象方法只能是public类型的,并且默认修饰符是public;抽象方法可以有public、protected和default这些修饰符(抽象方法就是为了被重写所以不能使用private关键字修饰!)。

接口中不能包含静态方法;抽象类中可以包含静态方法。

抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型。

接口和抽象类的相同点:

都可以被继承

都不能被实例化

都可以包含方法声明

派生类必须实现未实现的方法

请先 登录 后评论