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

如下程序
class shape{
public void draw(){}
}
public class Circle extends Shape{
@Override
public void draw(){}
public static void main(String[] args){
Shape s = new Circle();
s.draw();
}
}

当子类重写了draw()方法是,s.draw()调用的是子类的draw()方法,当子类没有重写draw()方法时,s.draw()调用的是父类的draw()方法,我的理解对吗?

当年话下
浏览 171回答 3
3回答

泛舟湖上清波郎朗

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

HUWWW

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

大话西游666

首先你那么理解是对的!当子类继承了父类之后,子类就拥有了父类的所有属性和方法。所以即使子类没有定义draw,其实他也拥有父类的draw,所以调用的时候,会执行父类的draw。但是当子类自己定义了draw方法,就会覆盖掉他从父类那继承过来的draw,所以一旦子类定义了draw,调用的时候,就只会调用子类的了!
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java