接口和抽象类的区别

  1. 接口的方法默认是public abstract,所有方法在接口中不能有实现,抽象类可以有非抽象的方法。(从 Java 8 开始,接口也可以拥有默认的方法实现,这是因为不支持默认方法的接口的维护成本太高了。在 Java 8 之前,如果一个接口想要添加新的方法,那么要修改所有实现了该接口的类。)
  2. 接口中的实例变量默认是private final static类型的,而抽象类中则不一定。
  3. 一个类可以实现多个接口,但最多只能继承一个抽象类。
  4. 一个类实现接口的话要实现接口的所有方法,而抽象类不一定。
  5. 接口中不能有构造函数,而抽象类中可以有构造函数。
  6. 从设计层面来说,抽象是对类的抽象,是一种模板设计,是IS-A的关系,而接口是行为的抽象,是一种行为的规范,是LIKE-A的关系。

posted on 2019-04-22 17:29  楼兰剑客  阅读(96)  评论(0编辑  收藏  举报

导航