java 抽象类与接口的区别 整理

抽象类与接口的区别

抽象类

包含抽象方法的类就是抽象类,声明的语句:abstract class
必须是public protected

接口

对行为的抽象,声明语句:interface
抽象方法的修饰符:public abstract
成员变量的修饰符:public static final

语法层面

  • 抽象类中可以包含成员方法的实现细节,而接口中只能存在抽象方法-public abstract
  • 抽象类中的成员变量可以是各种类型,接口中的成员变量只能是public static final
  • 抽象类中可以包含静态方法和静态代码块,接口中不能包含
  • 一个类只能继承一个抽象类,可以实现多个接口
  • 访问修饰符不同:抽象类方法的修饰符是public/protected;接口中方法的修饰符必须是public

设计层面

  • 抽象类是对事物的抽象,对类的抽象;接口是对行为的抽象,描述的是一种行为规范
  • 抽象类是对整个类进行抽象描述,包含属性和行为;接口只能对类的行为进行抽象

附上一幅图:

参考文章深入理解Java的接口和抽象类

原文地址:https://www.cnblogs.com/zhou-guobao/p/5496581.html