【发布时间】:2017-06-22 23:50:36
【问题描述】:
假设我有 3 个这样的课程:
|Abstract Class: Building|
|int windows; |
|int rooms; |
|
|
|Abstract Class: House extends Building|
|int familyMembers; |
|
|Class: MobileHome extends House|
|int wheels; |
现在我正在尝试找出构建程序的最佳方式,因为显然窗户和房间的数量将取决于House 的子类,但是所有建筑物都有窗户(至少为了这个程序他们是这样)。这就是为什么它们属于建筑类,但这些窗户的数量将取决于最低的子类,因为如果我创建另一个名为 mansion 的类,它扩展了House,显然豪宅将比移动房屋拥有更多的窗户。
最后,我计划制作我的建筑类和其他非常详细的抽象类,最后有大约一百个不同的属性(我列出的字段只是示例)所以我想知道是否有人对构造 MobileHome 对象的简洁方法可能只将一个对象传递给构造函数调用,而不是构造带有数百个参数的构造函数。
我在网上找到的所有示例都比较简单,通常只扩展一个类并且只使用几个字段,所以构造函数相对容易,所以我只是在寻找一个优雅的大规模解决方案。
旁注:如果有人对构建这些类的更好方法有任何想法,也许通过更多地分解它们,我会很感激任何意见。
【问题讨论】:
-
我不确定你到底在追求什么,或者你的
MobileHome类实际上需要是什么样子,但听起来你可能想要使用默认值。比如说,抽象Building,根据你的要求,至少有一门一室。所以你可以将两者都初始化为1。此外,如果需要,您可以提供 setter 方法来更改这些设置。如果你有一个TwoRoomHouse,你可以默认将它们初始化为2。 -
哦,我忘了:如果您实际上正在考虑一个需要数百个字段(成员变量)并因此在其构造函数中需要数百个参数的类,那么该类的设计似乎存在根本性错误。
-
您是否已经有一些带有很多参数的示例?我认为如果您将来会有一些复杂性,您真正需要的是更加灵活:codingdelight.com/2014/01/16/….
-
有一个使用示例会有所帮助。
标签: java inheritance constructor