【发布时间】:2014-02-06 12:17:57
【问题描述】:
我必须创建一个名为 Shape 的抽象类。
这个抽象类包含一个抽象方法GetArea(double height, double width);。
然后我将继承如下。
Rectangle : Shape
和
Oval : Shape
所以在这种情况下,我可以用方法中必需的 2 个参数覆盖 GetArea()。
现在我必须制作Circle : Oval inheritance。
所以再次计算面积我必须覆盖GetArea 方法。
但在这种情况下,从逻辑上讲,半径只需要一个参数。
在这种情况下我该怎么办?
如果我在 shape 类中使用一个参数 GetArea(double height) 重载另一种方法,那么在这种情况下,我必须在 Rectangle 和 Oval 类中覆盖它,这不是必需的吗?
什么是可能的解决方案?
Shape 类中的方法必须是抽象的,子类中的方法必须是参数化的。
【问题讨论】:
-
你可以重复使用相同的方法,宽度和高度应该相同,所以
r = w/2或r = h/2。虽然它并不能真正回答您的 OO 问题!
标签: c# inheritance polymorphism overloading overriding