我应该在我的java项目中具有动物的层次结构,但是我对应该扩展什么感到困惑。
以下是说明:
编写类或接口来表示以下内容:
可采用
动物
蝙蝠
鸟
蓝鲸
狗
鸸
鱼
金鱼
哺乳动物
獭
长尾小鹦鹉
爬虫
龟
WaterDweller
鲸
有翼的
您需要确定类/接口的结构。考虑:
哪个应该是抽象类?具体的课程?应该是
接口?类应该如何通过继承关联?
方法应放在哪些类中?应该采用什么方法
覆盖?哪些信息应作为参数使用?
哪些信息可以硬编码为类?一些额外的
详细信息/要求:
所有动物都具有返回布尔值的方法“ isWarmBlooded”。的
方法可以直接在类中或继承。所有动物都有
名称。所有类都有一个toString方法,该方法返回动物的
名称,动物是否为热血动物以及所有动物的清单
适用于动物的名称。 toString方法可以位于
类直接或继承。可以被当作宠物的动物有
一种方法“ getHomeCareInstructions”,该方法返回有关如何
照顾动物生活在水中的动物(是水
居民)具有“ livesOnLand”方法,该方法返回的布尔值
动物是否也可以在陆地上生活。有翅膀的动物有
一种“飞行”方法,该方法返回动物是否可以飞行的布尔值。
分配的这一部分不一定从
编程角度。你应该花些时间仔细
考虑课程的设计以及它们之间的关系
通过继承或接口
我不确定如何设计它,因为我知道有翅膀的鸟,但是蝙蝠也有。因此,蝙蝠会伸出翅膀,但是蝙蝠也是哺乳动物。我不可能有翅膀的哺乳动物,因为鸟类不是哺乳动物。此外,鲸鱼和水獭是垃圾居民,但也是水栖动物。我不能让水栖动物扩展哺乳动物(因为鲸鱼/水獭是哺乳动物),但是鱼不是哺乳动物,而是水栖动物。我如何使蝙蝠既有翅膀又有哺乳动物?编程是容易的部分,只是在与项目的结构作斗争。我该如何构造它才能起作用?
最佳答案
因此,在建模中,您必须考虑:
哪些是真正的动物?
例如鲸鱼,水獭->类
哪种动物?
例如一只鸟。 ->抽象类
由于每个e都是鸟。
这称为Liskov替代原理https://en.wikipedia.org/wiki/Liskov_substitution_principle
动物的特征是什么?
例如WaterDweller,Winged->这些是接口。
每个类别可以有一个超类,它可以具有许多特征,例如有翼,成为水栖动物或可被采用
蝙蝠示例的另一种补充:
它是哺乳动物->因此,它的超类是哺乳动物。它是带翅膀的-这是一个特性-因此它实现了带翅膀的界面。
class Bat extends Mammal implements Winged{
}
关于java - Java继承层次动物类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53117364/