接口

  • 直观理解就是一种约定
  • 不能有状态
  • 必须由类进行实现后使用

    抽象类

  • 实现了一部分协议的半成品
  • 可以有状态,可以有方法实现
  • 必须由子类继承后使用

    共性

  • 比较抽象,不能直接实例化
  • 有需要子类(实现类)实现的方法
  • 父类(接口)变量可以接收子类(实现类)的实例赋值

    区别

  • 抽象类有状态,接口不能有状态
  • 抽象类有方法实现,接口只能有无状态的默认实现
  • 抽象类只能单继承,接口可以多实现
  • 抽象类反应本质,接口体现能力