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