构建超类

时间:2017-06-22 23:50:36

标签: java inheritance constructor

假设我有3个这样的课程:

   |Abstract Class: Building|
   |int windows;            |
   |int rooms;              |
          |
          |
   |Abstract Class: House extends Building|
   |int familyMembers;                    |
          |
   |Class: MobileHome extends House|
   |int wheels;                    |

现在我正在试图找出构建我的程序的最佳方法,因为很明显窗户和房间的数量将取决于House的子类,但是所有建筑物都有窗户(至少为了他们做的这个程序)。所以这就是他们在建筑类中的原因,但是这些窗口的数量将取决于最低的子类,因为如果我创建另一个名为mansion的类,其扩展House,那么大厦将拥有比移动房屋更多的窗户。 / p>

最后我计划制作我的构建类,其他抽象类非常详细,最后有大约一百个不同的属性(我列出的字段只是示例)所以我想知道是否有人有任何想法构建MobileHome对象的简洁方法可能只是将一个对象传递给构造函数调用,而不是构造带有数百个参数的构造函数。

我在网上找到的所有例子都相对简单,通常只扩展一个类,只使用几个字段,因此构建器相对容易,所以我只是在寻找一个优雅的大规模解决方案。

SideNote:如果有人对更好地构建这些类的方法有任何想法,也许通过更多分解我会感激任何意见。

2 个答案:

答案 0 :(得分:0)

超级类的想法是使用所有子类共有的字段和方法尽可能创建最通用的类​​。因此,尽可能多地在父类中放置“数百个”参数。

如果您有那么多参数,那么如果您可以将这些参数分组到类中,然后将这些类的对象作为您的成员,则可能值得一试。例如,在移动房屋中,而不是使用描述每个细节的字段,您希望将细节组合在一起。基本上,如果您在一个类中有数百个字段,那么您的设计就会出现问题,那么所有这些字段都必须有共同的子组。

答案 1 :(得分:0)

您可能需要查看creational design patterns一书中的gof。特别是builder听起来似乎很合适。这应该会让您了解如何构建类。您可以在java here中找到一些示例。