导语:最近的一次面试中,面试官问到一个类实现了多个接口中的重名默认方法,调用时会使用哪个?这种问题之前我还真没特别关注,这里简单记录一下。
- 首先判断本类是否重写了默认方法,如果重写了,就直接调用本类的方法。如果本类没重写,那么判断其父类是否重写了,本类和父类中方法优先级最高。
- 如果以上无法判断,那么子接口的优先级更高。例如类C继承了接口B,接口B继承了接口A,在接口A和B中都实现了一个重名默认方法,那么,B的优先级更高。
- 如果继承的多个接口是同级的,比如接口A和接口B没有关系,那么就得在本类中显示声明要调用哪一个接口中的实现。