java 抽象类与接口的区别 整理
抽象类与接口的区别
抽象类
包含抽象方法的类就是抽象类,声明的语句:abstract class
必须是public protected
接口
对行为的抽象,声明语句:interface
抽象方法的修饰符:public abstract
成员变量的修饰符:public static final
语法层面
- 抽象类中可以包含成员方法的实现细节,而接口中只能存在抽象方法-public abstract
- 抽象类中的成员变量可以是各种类型,接口中的成员变量只能是public static final
- 抽象类中可以包含静态方法和静态代码块,接口中不能包含
- 一个类只能继承一个抽象类,可以实现多个接口
- 访问修饰符不同:抽象类方法的修饰符是public/protected;接口中方法的修饰符必须是public
设计层面
- 抽象类是对事物的抽象,对类的抽象;接口是对行为的抽象,描述的是一种行为规范
- 抽象类是对整个类进行抽象描述,包含属性和行为;接口只能对类的行为进行抽象
附上一幅图:
参考文章深入理解Java的接口和抽象类