【发布时间】:2014-12-02 13:40:07
【问题描述】:
所以我有一个超类 GeoFig 类,以及两个子类 Cylinder 和 Sphere。我想在超类中包含一种方法来计算体积(称为 setVolume),但是每个子类都有不同的计算体积的公式。通过子类的构造函数,我将 setVolume 和 getVolume。我该怎么做?
【问题讨论】:
-
请显示一些代码。
-
使用抽象
setVolume()方法制作GeoFig抽象。在子类中,您将提供方法的实现。 -
setVolume实际上会做什么? -
@noobforce:
"I must have the method in the superclass, with no abstract method."- 那么你的设计是错误的。GeoFig是一个抽象概念,它应该是一个抽象类。每个继承的类都有自己的确定音量的实现,因此每个都应该覆盖一个抽象成员来进行确定。此外,应该没有setVolume,因为数量是根据其他指标计算的。 -
@noobforce:
"setVolume will make volume equal to whatever the formula for calculating the shape's volume is."- 这没有任何意义。例如,体积为 5 立方单位的圆柱体的尺寸是多少?没有足够的数据来计算。"GeoFig contains a private double field called volume."- 也不正确。体积不被存储,它是计算出来的。它可以被临时缓存以提高性能(虽然不是真的必要,这些都是小计算)并且当形状的维度发生变化时缓存会失效,但它实际上并没有被存储。
标签: java subclass superclass