重名问题...

重名问题...

老师,多个接口有同名的默认方法,必须在实现类重写。那么,多个接口有同名的方法(不是默认方法),应该也必须在实现类重写吧?因为这个方法本来就需要在实现类去重写,我的理解对吗?

还有,为什么父类的方法与多接口的方法同名,实例化对象后,引用调的会是父类的方法呢?

正在回答

登陆购买课程后可参与讨论,去登陆

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();
}
}

http://img1.sycdn.imooc.com//climg/5cfbd901000167fa06770448.jpg

其实,因为继承接口后,必须实现接口中的非默认方法,所以按理说子类应该重新接口中的抽象方法,但是你会发现,当子类中没有写这个重名方法时,编译并没有报错,原因就是,其实这个Son是默认继承了父类中的name方法,这样就相当于子类中有个继承下来的name方法,它就恰好等于重写了接口中的同名方法。

如果同学想的不是这个意思,请同学写个代码,举例说明。

如果我的回答解决了你的问题,请采纳。祝学习愉快。

  • 鱼儿0001 提问者 #1
    谢谢老师的耐心回复。我想的确是是这个意思。老师,其实就是子类隐藏继承了父类的方法,这个隐藏的方法恰好与需要重写的接口中的方法同名,所以在子类里什么都不做,对象实例化后,引用调的其实是子类默认继承自父类的方法。老师,我的理解对吗?
    2019-06-09 14:39:59
  • 好帮手慕小班 回复 提问者 鱼儿0001 #2
    同学的理解是正确的哦! 继续加油~ 祝:学习愉快~
    2019-06-09 14:50:47
  • 鱼儿0001 提问者 回复 好帮手慕小班 #3
    好的,谢谢老师。还有,因为放假关系,我提的有些问题搁置的有点久了,希望能尽快回答,谢谢老师!
    2019-06-09 14:56:27
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星

相似问题

登录后可查看更多问答,登录/注册

请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师