我如何实现这种层次结构?

时间:2013-06-27 21:46:33

标签: java

我们在上面有类动物。然后我们有哺乳动物,爬行动物,鱼类和鸟类。这个子类的子类是狮子,狗,蛇,蜥蜴,鲱鱼,鲨鱼,鸽子和鹰。 这都是课程。如果动物是陆地,水或飞行,我们需要有所作为,水动物有两种类型:淡水和咸水。它们也可以是水和陆地。我想过接口,但也许它不好,因为对于鸟类,例如我们没有像方法那样实现。也许我可以把它变成动物类中的变量,然后在构造函数中将这个布尔变量。我不确定实现这个的最佳方法是什么。你能帮助我吗 ?

1 个答案:

答案 0 :(得分:1)

不,你不为动物的特征制作变量,因为这些特征不会改变(忽视进化)。

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

目前,如何实现一些基本的多态布尔函数,如IsTerrestrial()IsAquatic()等......也许会为AquaticType生成一个返回None的枚举,FreshWaterSaltWaterBoth。您可以在最高级别覆盖这些方法,以便您的子类型不必担心。

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

这有点主观。有很多方法可以在类层次结构中表示这些信息,但这应该可以帮助您开始。