首页 理论教育 方法覆盖实现的多态

方法覆盖实现的多态

时间:2022-02-28 理论教育 版权反馈
【摘要】:在子类中,对继承父类的实例方法进行重新定义,使子类的实例方法与父类的实例方法具有相同的方法名、返回类型和完全一致的参数,这称为方法覆盖。虽然getArea()方法有2种实现方式,但却共享同一个方法名getArea。由于这些方法是存在于一个类层次结构的不同子类中,在调用方法时只需要指明调用那个对象的方法,就能把它们区分开来。同理,由于o2保存的是Cube对象的引用值,所以,o2.getArea()表明要调用Cube的求立方体表面积的getArea()方法。

5.6.2 方法覆盖实现的多态

在子类中,对继承父类的实例方法进行重新定义,使子类的实例方法与父类的实例方法具有相同的方法名、返回类型和完全一致的参数,这称为方法覆盖。

【例5-16】 用方法覆盖,计算矩形面积以及立方体的表面积。即调用同名方法,实现不同的功能。

img324

img325

程序运行结果:

img326

分析与思考:在子类中,对父类计算矩形面积的getArea()方法重新定义,使它变为计算立方体的表面积。虽然getArea()方法有2种实现方式,但却共享同一个方法名getArea。

子类重新定义父类方法时,方法的名字、参数类型和返回类型完全相同。那么,如何区分这些同名的不同方法呢?由于这些方法是存在于一个类层次结构的不同子类中,在调用方法时只需要指明调用那个对象的方法,就能把它们区分开来。其调用形式是:

对象名.方法名

例如,由于o1保存的是Rectangle对象的引用值,所以,o1.getArea()表明要调用Rectangle的求矩形面积的getArea()方法。同理,由于o2保存的是Cube对象的引用值,所以,o2.getArea()表明要调用Cube的求立方体表面积的getArea()方法。

模仿例5-16:用方法覆盖,计算圆面积以及球的表面积。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈