重名问题...
老师,多个接口有同名的默认方法,必须在实现类重写。那么,多个接口有同名的方法(不是默认方法),应该也必须在实现类重写吧?因为这个方法本来就需要在实现类去重写,我的理解对吗?
还有,为什么父类的方法与多接口的方法同名,实例化对象后,引用调的会是父类的方法呢?
8
收起
正在回答
1回答
1、
老师,多个接口有同名的默认方法,必须在实现类重写。那么,多个接口有同名的方法(不是默认方法),应该也必须在实现类重写吧?因为这个方法本来就需要在实现类去重写,我的理解对吗?
答:同学理解的是正确的,
2、同学说的父类的方法与多接口的方法同名时,实例化对象后,引用的是父类的方法,
同学是否可以举个例子吗?
这里老师举了个例子,但是不知道是不是同学想的那种
package javaTest; public class Father { public void name() { System.out.println("这是父类的方法"); } } package javaTest; public class Son extends Father implements Intf{ } package javaTest; public interface Intf { public void name() ; }
package javaTest; public class Test { public static void main(String[] args) { Intf intf = new Son(); intf.name(); } }
其实,因为继承接口后,必须实现接口中的非默认方法,所以按理说子类应该重新接口中的抽象方法,但是你会发现,当子类中没有写这个重名方法时,编译并没有报错,原因就是,其实这个Son是默认继承了父类中的name方法,这样就相当于子类中有个继承下来的name方法,它就恰好等于重写了接口中的同名方法。
如果同学想的不是这个意思,请同学写个代码,举例说明。
如果我的回答解决了你的问题,请采纳。祝学习愉快。
1. Java 零基础入门
- 参与学习 人
- 提交作业 3802 份
- 解答问题 11489 个
本阶段带你迈入Java世界,学习Java必备基础知识,基础语法、面向对象思想以及常用工具类的使用。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星