147 01 Android 零基础入门 02 Java面向对象 07 Java多态 05 接口(重点)05 关于多接口中重名默认方法处理的解决方案

147 01 Android 零基础入门 02 Java面向对象 07 Java多态 05 接口(重点)05 关于多接口中重名默认方法处理的解决方案

**本文知识点:关于多接口中重名默认方法处理的解决方案 **

说明:因为时间紧张,本人写博客过程中只是对知识点的关键步骤进行了截图记录,没有对截图步骤进行详细的文字说明(后面博主时间充裕了,会对目前的博客编辑修改,补充上详细的文字说明);有些步骤和相关知识点缺乏文字描述,可能会难以理解。读者如有不明之处,欢迎博客私信或者微信(本人微信在博客下方的“关于博主”处)与本人交流,共同进步

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

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

Java中,一个类可以实现多个接口:只需要在接口名后添加逗号,再写上新接口的名称即可。
mark

比如新智能手表不仅可以上网,也可以拍照了。
mark
mark

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

INet接口中存在一个无参无返回值的默认方法connection()
mark
测试类中调用INet接口中的默认方法connection()
mark

在IPhoto接口中也增加一个名叫connection()的默认方法
mark

这时,接口的实现类(子类)就会报错了mark

报错的原因是:实现类不知道该实现IPhoto接口还是INet接口的connection(),因为这两个接口都connection()默认方法,并且名字完全一样,重名了
mark

解决这种多接口存在重名默认方法,实现类报错的方案:
在实现类中定义实现类自己专属的connection()方法,即:重写connection方法
mark
实现类中有了connection()方法之后,就不会再报错了

回到测试类中,测试,再次调用connection方法时,就调用的是实现类中自己的connection方法了
mark
mark

对一个类而言,可以在继承自己父类的同时,还实现其他的接口,并且可以实现多个接口
mark

注意:接口的实现,要给放在继承之后
mark
mark
即:作为一个子类,它依然继承自唯一父类,但是可以同时实现若干个接口
mark

在实现多个接口时,一定注意要实现接口中待重写的方法。否则,这个类就必须是抽象类。
mark

如前所述,当多个接口中都有相同名称的默认方法时,作为实现类就不知道该实现哪个默认方法了,只能自己重写默认方法。

子类继承的父类和实现的多个接口都存在重名方法的情况

but,如果我的类继承自父类
mark

并同时实现2个接口的情况下,
mark

并且父类和2个接口中都有名叫connection的方法。此时,子类(实现类)是否具有分辨connection方法的能力呢?
mark

父类中的connection方法:
mark

子类没有重写connection方法的情况下,也并没有任何报错提示
mark

测试类中测试子类调用connection方法的结果,结果显示:子类默认指向父类中的方法
mark

当然,在子类中依然可以重写该connection方法
mark

经过在子类的重写之后,我们在测试类中再次测试子类对象调用connection方法的结果:
此时的结果,就是调用重写之后的connection方法
mark

原文地址:https://www.cnblogs.com/xlfcjx/p/13826924.html