Java继承层次结构动物类

Java继承层次结构动物类,java,inheritance,polymorphism,multiple-inheritance,Java,Inheritance,Polymorphism,Multiple Inheritance,我的java项目中应该有一个动物的层次结构,但我不知道应该扩展什么。 以下是说明: 编写类或接口以表示以下内容: 可收养 动物 球棒 鸟 蓝鲸 狗 欧洲经济与货币同盟 鱼 金鱼 哺乳动物 水獭 鹦鹉 爬行动物 乌龟 水上居民 鲸鱼 有翼 您需要决定类/接口的结构。考虑: 哪一个应该是抽象类?具体的课程?应该是哪一个 接口?这些类应该如何通过继承进行关联? 方法应该放在什么类中?应该采用什么方法 推翻?应将哪些信息作为参数,以及 哪些信息可以硬编码到类中?一些额外的 详情/要求: 所有动物都有一个

我的java项目中应该有一个动物的层次结构,但我不知道应该扩展什么。 以下是说明:

编写类或接口以表示以下内容:

可收养 动物 球棒 鸟 蓝鲸 狗 欧洲经济与货币同盟 鱼 金鱼 哺乳动物 水獭 鹦鹉 爬行动物 乌龟 水上居民 鲸鱼 有翼 您需要决定类/接口的结构。考虑:

哪一个应该是抽象类?具体的课程?应该是哪一个 接口?这些类应该如何通过继承进行关联? 方法应该放在什么类中?应该采用什么方法 推翻?应将哪些信息作为参数,以及 哪些信息可以硬编码到类中?一些额外的 详情/要求:

所有动物都有一个返回布尔值的方法iswarmblouded。这个 方法可以直接在类中,也可以继承。所有的动物都有一个 名称所有类都有一个toString方法,该方法返回动物的 名称、动物是否为温血动物以及所有动物的列表 适用于动物的名称。toString方法可以在 直接或继承类。可作为宠物收养的动物有 一种方法getHomeCareInstructions,返回如何 照顾动物。生活在水中的动物是水 居住者有一个方法livesOnLand,它返回一个布尔值 动物是否也能在陆地上生活。有翅膀的动物有翅膀 一个方法flies,返回动物是否会飞的布尔值。 这部分作业从某种意义上来说并不一定难 编程视角。你应该花时间做的事是谨慎的 考虑类的设计以及它们之间的关系 通过继承或接口


我不知道该如何设计,因为我知道鸟是有翅膀的,但蝙蝠也是。所以蝙蝠可以伸展翅膀,但蝙蝠也是哺乳动物。我不能让有翅膀的哺乳动物,因为鸟类不是哺乳动物。此外,鲸鱼和水獭是水栖动物,但也是水栖动物。我不能让水栖动物扩展哺乳动物,因为鲸鱼/水獭是哺乳动物,但鱼不是哺乳动物,它们是水栖动物。我怎样才能使蝙蝠既有翅膀又是哺乳动物呢?编程是最简单的部分,只是在与项目的结构作斗争。我如何构造它才能工作?

所以在建模时,你必须考虑:

哪些是真正的动物

e、 g.鲸鱼、水獭->职业

哪一种是动物

e、 g.一只鸟。->抽象类

因为每只鸸鹋都是鸟。 这被称为里斯科夫替换原理

动物的哪些特征

e、 水栖者,有翼->这些是接口

每个类都可以有一个超类,它可以有很多特征,比如有翅膀,或者是水上居民,或者是可接受的

为您的bat示例添加一项:

它是哺乳动物->因此它的超类是哺乳动物。它是有翼的-这是一个特性-因此它实现了有翼接口

class Bat extends Mammal implements Winged{
}

例如,将翅膀接口和哺乳动物接口以及Bat作为实现这两个接口的类。请记住,一个类只能扩展一个类,但可以实现许多接口。更好的是,哺乳动物可以是一个抽象类。@user10527814哺乳动物不应该是一个接口吗?假设我必须是类。它们是:动物→ 鱼→ 金鱼,还有动物→ 哺乳动物→ 鲸鱼比如说,我想在他们身上使用可采用的接口。问题是:我应该在哪里实现可采用的接口?例如,我应该在动物类还是鲸鱼类中实现它?如果所有东西都应该被采纳,那么就去动物类,如果只有鲸鱼应该被采纳,那么就去鲸鱼类。等等。如果只有哺乳动物可以被收养,你也可以选择哺乳动物