page contents

抽象类和接口有什么区别?

轩辕小不懂 发布于 2022-01-13 14:54
阅读 470
收藏 0
分类:Java开发
2876
Nen
Nen
- 程序员

 1)抽象类中可以定义构造函数,接口不能定义构造函数;

(2)抽象类中可以有抽象方法和具体方法,而接口中只能有抽象方法(public abstract);

(3)抽象类中的成员权限可以是 public、默认、protected(抽象类中抽象方法就是为了重写,所以不能被 private 修饰),而接口中的成员只可以是 public(方法默认:public abstrat、成员变量默认:public static final);

(4)抽象类中可以包含静态方法,而接口中不可以包含静态方法;

JDK 8 中的改变:

1、在 JDK1.8中,允许在接口中包含带有具体实现的方法,使用 default 修饰,这类方法就是默认方法。

2、抽象类中可以包含静态方法,在 JDK1.8 之前接口中不能包含静态方法,JDK1.8 以后可以包含。之前不能包含是因为,接口不可以实现方法,

只可以定义方法,所以不能使用静态方法(因为静态方法必须实现)。现在可以包含了,只能直接用接口调用静态方法。JDK1.8 仍然不可以包含静态代码块。

请先 登录 后评论