147 01 Android 零基础入门 02 Java面向对象 07 Java多态 05 接口(重点)05 关于多接口中重名默认方法处理的解决方案
**本文知识点:关于多接口中重名默认方法处理的解决方案 **
说明:因为时间紧张,本人写博客过程中只是对知识点的关键步骤进行了截图记录,没有对截图步骤进行详细的文字说明(后面博主时间充裕了,会对目前的博客编辑修改,补充上详细的文字说明);有些步骤和相关知识点缺乏文字描述,可能会难以理解。读者如有不明之处,欢迎博客私信或者微信(本人微信在博客下方的“关于博主”处)与本人交流,共同进步。
关于多接口中重名默认方法处理的解决方案
Java中,一个类可以实现多个接口
Java中,一个类可以实现多个接口:只需要在接口名后添加逗号,再写上新接口的名称即可。
比如新智能手表不仅可以上网,也可以拍照了。
多接口中重名默认方法处理的解决方案
INet接口中存在一个无参无返回值的默认方法connection()
测试类中调用INet接口中的默认方法connection()
在IPhoto接口中也增加一个名叫connection()的默认方法
这时,接口的实现类(子类)就会报错了
报错的原因是:实现类不知道该实现IPhoto接口还是INet接口的connection(),因为这两个接口都connection()默认方法,并且名字完全一样,重名了
解决这种多接口存在重名默认方法,实现类报错的方案:
在实现类中定义实现类自己专属的connection()方法,即:重写connection方法
实现类中有了connection()方法之后,就不会再报错了
回到测试类中,测试,再次调用connection方法时,就调用的是实现类中自己的connection方法了
对一个类而言,可以在继承自己父类的同时,还实现其他的接口,并且可以实现多个接口
注意:接口的实现,要给放在继承之后,
即:作为一个子类,它依然继承自唯一父类,但是可以同时实现若干个接口
在实现多个接口时,一定注意要实现接口中待重写的方法。否则,这个类就必须是抽象类。
如前所述,当多个接口中都有相同名称的默认方法时,作为实现类就不知道该实现哪个默认方法了,只能自己重写默认方法。
子类继承的父类和实现的多个接口都存在重名方法的情况
but,如果我的类继承自父类
并同时实现2个接口的情况下,
并且父类和2个接口中都有名叫connection的方法。此时,子类(实现类)是否具有分辨connection方法的能力呢?
父类中的connection方法:
子类没有重写connection方法的情况下,也并没有任何报错提示
测试类中测试子类调用connection方法的结果,结果显示:子类默认指向父类中的方法
当然,在子类中依然可以重写该connection方法
经过在子类的重写之后,我们在测试类中再次测试子类对象调用connection方法的结果:
此时的结果,就是调用重写之后的connection方法