面试-Java基础-谈谈接口和抽象类的区别

相同点

抽象类和接口都不能被直接实例化。

不同点

  1. 抽象类是用abstract修饰的类,而接口是用interface来定义。
  2. 抽象类是被子类继承(extends),而接口是被子类实现(implements)或者被子接口继承(extends)。并且遵循“单继承多实现”。
  3. 抽象类中可以有具体的实现方法,接口中所有的方法时没有具体的实现的。
  4. 抽象类中的成员变量可以是各种类型,接口中的成员变量都是常量(也就是public static final类型的)。

延伸

抽象类与抽象方法的关系:抽象类不一定包含抽象方法,有抽象方法的类一定是抽象类。
Java中提倡“面向接口编程”,为什么还要使用抽象类呢?通常在“既要约束子类的行为,又要为子类提供公共功能”的时候使用抽象类。

------ 本文完 ------