如下程序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个赞
这里是构造函数,继承,多态的综合问题
基类也就是父类的所有方法,属性,子类一旦继承这个父类那么就拥有了父类的一切
子类是父类的派生类,他的函数至少和父类一样多,也就是说,父类拥有的功能子类至少也拥有,这种情况就是子类未重新父类的方法,父类方法可以满足子类的需求,所以,这个时候你调用子类的方法也就是调用父类的方法;
当然如何子类重新了父类的方法那么,自然就调用子类的方法
HUWWW
TA贡献1874条经验 获得超12个赞
@Override
public void draw(){}
这句表示子类已经重新了父类的方法。 所以你调用的只能是子类的。
子类没有重新父类的方法,用到该方法的时候当然就使用的是父类的方法了。
大话西游666
TA贡献1817条经验 获得超14个赞
首先你那么理解是对的!当子类继承了父类之后,子类就拥有了父类的所有属性和方法。所以即使子类没有定义draw,其实他也拥有父类的draw,所以调用的时候,会执行父类的draw。但是当子类自己定义了draw方法,就会覆盖掉他从父类那继承过来的draw,所以一旦子类定义了draw,调用的时候,就只会调用子类的了!
添加回答
举报
0/150
提交
取消