十五、接口与抽象类的区别?

78 阅读1分钟

共同点: :

  • 都不能被实例化。
  • 都可以包含抽象方法。
  • 都可以有默认实现的方法(Java 8 可以用 default 关键字在接口中定义默认方法).

区别: :

概念不一样:

  • 接口是对动作的抽象,抽象类是对本质的抽象。
  • 抽象类表示的是,这个对象是什么。接口表示的是,这个对象能做什么。比如,男人,女人,这两个类(如果是类的话……),他们的抽象类是人。说明,他们都是人。人可以吃东西,狗也可以吃东西,你可以把“吃东西”定义成一个接口,然后让这些类去实现它。所以,在高级语言上,一个类只能继承一个类(抽象类)(正如人不可能同时是生物和非生物),但是可以实现多个接口(吃饭接口、走路接口)。

使用不一样:

  • 接口主要用于对类的行为进行约束,你实现了某个接口就具有了对应的行为。抽象类主要用于代码复用,强调的是所属关系.
  • 一个类只能继承一个类, 但是可以实现多个接口.
  • 抽象类可以有构造方法, 接口没有构造方法.
  • 接口中的成员变量只能是 public static final 类型的,不能被修改且必须有初始值,而抽象类的成员变量默认 default,可在子类中被重新定义,也可被重新赋值.

使用方向: 当你关注一个事物的本质的时候,用抽象类;当你关注一个操作的时候,用接口

参考: 抽象类与接口的区别