接口和抽象类的共性和区别

共性:

  1、都不能被实例化

  2、接口中实现类或者抽象类的子类只有实现了接口或抽象类中方法后才能实例化

区别:

  1、接口只有方法的定义,JDK1.8后可以定义default方法体,抽象类可以有定义或实现。

  2、实现和继承关键字不同,Java仅支持单继承但支持多实现

  3、接口强调特定功能的实现,便于后序的增删,抽象类强调所属关系,倾向公共类,不适于修改

  4、接口成员变量默认为public static final,必须赋初值,所有成员方法都是public、abstract,抽象类中成员变量默认default,可在子类中重新定义或赋值,抽象方法被abstract修饰,不能被private、static、sychronized、native修饰。