2013-06-27 41 views
-8

我们有顶级动物。然后我们有哺乳动物,爬行动物,鱼和鸟的亚类。这个亚类的子类是狮子,狗,蛇,蜥蜴,鲱鱼,鲨鱼,鸽子和鹰。 这都是课程。如果动物是天然的,水或飞行的,而且水生动物有两种类型:淡水和咸水,我们需要改变。例如,它们也可以是水和天然的。我想过接口,但也许不好,因为对于鸟类来说,我们没有像方法那样实现什么。也许我可以使它像动物类中的变量,然后在构造函数中将这个布尔变量。我不确定如何实现这个最好的方法。你可以帮我吗 ?我如何实现这个层次结构?

+0

“Mb”是什么意思? –

+0

至少提供一些您尝试过的东西的证据。 –

+0

你没有什么可以实现的鸟类? srsy?那么飞呢?襟翼?飙升? – darijan

回答

1

不,你不会为动物的特征制造变量,因为这些特征不会改变(不考虑进化)。

首先,您需要一本体面的面向对象设计书,而不是要求我们提供帮助。采取主动并做一些研究。

就目前而言,如何只执行一些基本的多态布尔功能,如IsTerrestrial()IsAquatic()等..也许让一个枚举AquaticType返回NoneFreshWaterSaltWaterBoth。您可以在最高级别覆盖这些方法,以便您的子类型不必担心。

例如,几乎所有的鱼都不是陆地的,所以Fish的子类不应该实施这种方法(Fish类应该)。同样,大多数哺乳动物不是水生的。

这都有点主观。在类层次结构中有很多方法来表示这些信息,但这应该给你一个开始。