我们在上面有类动物。然后我们有哺乳动物,爬行动物,鱼类和鸟类。这个子类的子类是狮子,狗,蛇,蜥蜴,鲱鱼,鲨鱼,鸽子和鹰。 这都是课程。如果动物是陆地,水或飞行,我们需要有所作为,水动物有两种类型:淡水和咸水。它们也可以是水和陆地。我想过接口,但也许它不好,因为对于鸟类,例如我们没有像方法那样实现。也许我可以把它变成动物类中的变量,然后在构造函数中将这个布尔变量。我不确定实现这个的最佳方法是什么。你能帮助我吗 ?
答案 0 :(得分:1)
不,你不为动物的特征制作变量,因为这些特征不会改变(忽视进化)。
首先,你需要一本关于面向对象设计的好书,而不是要求我们提供帮助。采取一些主动并做一些研究。
目前,如何实现一些基本的多态布尔函数,如IsTerrestrial()
,IsAquatic()
等......也许会为AquaticType
生成一个返回None
的枚举,FreshWater
,SaltWater
或Both
。您可以在最高级别覆盖这些方法,以便您的子类型不必担心。
例如,几乎所有的鱼都不是陆地的,因此Fish
的子类不应该实现这种方法(Fish
类应该)。同样,大多数哺乳动物不是水生动物。
这有点主观。有很多方法可以在类层次结构中表示这些信息,但这应该可以帮助您开始。