Java中一个类可以实现多个接口:

Java多态九:多接口中重名默认方法处理的解决方案;父类和多接口中重名方法的处理方案


1.多接口中重名默认方法处理的解决方案

比如,在INet接口和IPhoto接口中,均有默认方法 connection;此时,SmartWatch类实现了这两个接口,如果对此不进行处理会报错:

Java多态九:多接口中重名默认方法处理的解决方案;父类和多接口中重名方法的处理方案

解决方案:

在SmartWatch类中,定义一个自己的connection方法:

Java多态九:多接口中重名默认方法处理的解决方案;父类和多接口中重名方法的处理方案

这个时候:三种情况下的调用,均是调用的实现类中定义的默认方法。

Java多态九:多接口中重名默认方法处理的解决方案;父类和多接口中重名方法的处理方案

注:这儿相当于是对两个接口中重名方法的覆盖和摒弃


2.父类和多接口中重名方法的处理方案

另一种情况:类B继承了类A,实现了接口C和D;且类A,接口C和接口D中均有相同前面的connection方法,那么此时应该如何处理?如下:

Java多态九:多接口中重名默认方法处理的解决方案;父类和多接口中重名方法的处理方案

Java多态九:多接口中重名默认方法处理的解决方案;父类和多接口中重名方法的处理方案

Java多态九:多接口中重名默认方法处理的解决方案;父类和多接口中重名方法的处理方案

两个接口和一个父类中,均有b方法;

首先,当实现类里没有b方法时:没有报错 

Java多态九:多接口中重名默认方法处理的解决方案;父类和多接口中重名方法的处理方案

其结果:直接调用的父类中的b方法; (很显然,子类继承了父类的b方法)

Java多态九:多接口中重名默认方法处理的解决方案;父类和多接口中重名方法的处理方案

其次,当实现类里有b方法时:自然也没有报错       

Java多态九:多接口中重名默认方法处理的解决方案;父类和多接口中重名方法的处理方案

其结果:就是调用的实现类里的b方法      (子类重写了父类的b方法)

Java多态九:多接口中重名默认方法处理的解决方案;父类和多接口中重名方法的处理方案

 

相关文章:

  • 2021-06-07
  • 2021-11-11
  • 2020-06-21
  • 2021-10-19
  • 2021-05-28
  • 2022-12-23
  • 2022-12-23
  • 2021-06-24
猜你喜欢
  • 2021-08-09
  • 2022-12-23
  • 2022-12-23
  • 2021-05-31
  • 2022-02-09
  • 2022-12-23
  • 2021-04-12
相关资源
相似解决方案