JAVA为什么需要接口

  • 接口是一种规范
  • 接口可以实现多继承


接口是一种规范

接口方便了多人项目中开发者间的分工协作。考虑一下两种场景:

  1. 场景一:开发者1想要实现A类,为了加快开发速度,开发者1选择将一部分功能的实现抽象为一个工具类B,并交由开发者2实现这个B类。
    此时开发者1可以通过接口B定义好所需方法,开发者1无需等待开发者2实现B类,就可以继续实现A类(虽然无法进行调试)。开发者2直接按照开发者1提供的接口B开发,而无需和开发者1反复沟通。本来是有顺序的A类和B类可以实现同步开发。
  2. 场景二:当A类对B类的需求发生变化时,要求开发者2重新实现一个B2类来代替B类。接口B的存在让开发者2可以直接按照接口B来开发类B2,而无需去A类或B类查找需要实现的方法。

接口可以实现多继承

JAVA中不允许一个类同时有多个父类,但是允许一个类同时实现多个接口。当然这种多接口与真正的多继承是不等价的。因为实际项目中,继承是为了子类能直接使用父类的一些方法,而无需自行实现。但是接口是没有方法的实现的,还是需要子类自行实现。
而在JDK1.8中加入了接口的默认实现功能,该功能可以给接口类的方法定义一个defualt方法。此时多接口可以实现多继承的一些功能了。
当然为了避免多继承中可能存在的同名方法问题,当多接口有同名默认方法时,就必须要在实现类重写该方法。