为了账号安全,请及时绑定邮箱和手机立即绑定

麻烦大神帮忙解释一下子类没有重写方法的时候的调用原理?

麻烦大神帮忙解释一下子类没有重写方法的时候的调用原理?

当年话下 2022-05-26 19:19:43
如下程序class shape{public void draw(){}}public class Circle extends Shape{@Overridepublic void draw(){}public static void main(String[] args){Shape s = new Circle();s.draw();}}当子类重写了draw()方法是,s.draw()调用的是子类的draw()方法,当子类没有重写draw()方法时,s.draw()调用的是父类的draw()方法,我的理解对吗?
查看完整描述

3 回答

?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

这里是构造函数,继承,多态的综合问题
基类也就是父类的所有方法,属性,子类一旦继承这个父类那么就拥有了父类的一切
子类是父类的派生类,他的函数至少和父类一样多,也就是说,父类拥有的功能子类至少也拥有,这种情况就是子类未重新父类的方法,父类方法可以满足子类的需求,所以,这个时候你调用子类的方法也就是调用父类的方法;
当然如何子类重新了父类的方法那么,自然就调用子类的方法

查看完整回答
反对 回复 2022-05-30
?
HUWWW

TA贡献1874条经验 获得超12个赞

@Override
public void draw(){}
这句表示子类已经重新了父类的方法。 所以你调用的只能是子类的。
子类没有重新父类的方法,用到该方法的时候当然就使用的是父类的方法了。

查看完整回答
反对 回复 2022-05-30
?
大话西游666

TA贡献1817条经验 获得超14个赞

首先你那么理解是对的!当子类继承了父类之后,子类就拥有了父类的所有属性和方法。所以即使子类没有定义draw,其实他也拥有父类的draw,所以调用的时候,会执行父类的draw。但是当子类自己定义了draw方法,就会覆盖掉他从父类那继承过来的draw,所以一旦子类定义了draw,调用的时候,就只会调用子类的了!

查看完整回答
反对 回复 2022-05-30
  • 3 回答
  • 0 关注
  • 168 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信