Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 构造超类_Java_Inheritance_Constructor - Fatal编程技术网

Java 构造超类

Java 构造超类,java,inheritance,constructor,Java,Inheritance,Constructor,假设我有3个这样的课程: |Abstract Class: Building| |int windows; | |int rooms; | | | |Abstract Class: House extends Building| |int familyMembers; | | |Class: MobileHome e

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

   |Abstract Class: Building|
   |int windows;            |
   |int rooms;              |
          |
          |
   |Abstract Class: House extends Building|
   |int familyMembers;                    |
          |
   |Class: MobileHome extends House|
   |int wheels;                    |
现在我正试图找出构建我的程序的最佳方法,因为很明显,窗口和房间的数量将取决于
House
的子类,但是所有建筑物都有窗口(至少为了这个程序,它们有)。这就是为什么它们在building类中,但这些窗口的数量将取决于最低的子类,因为如果我创建另一个名为“大厦”的类,它扩展了
House
,显然大厦的窗口将多于移动房屋

最后,我计划使我的building类和其他抽象类非常详细,最后有大约100个不同的属性(我列出的字段只是示例)所以我想知道是否有人想到了一种干净的方法来构造一个
MobileHome
对象——可能只在构造函数调用中传递一个对象,而不是生成包含数百个参数的构造函数

我在网上找到的所有示例都相对简单,通常只扩展一个类,并且只使用两个字段,因此构造构造函数相对简单,因此我正在寻找一个优雅的大规模解决方案


旁注:如果有人对如何更好地构造这些类有任何想法,也许可以将它们进一步分解,我将非常感谢您的任何意见。

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


如果您有那么多参数,那么如果您可以将这些参数也分组到类中,然后将这些类的对象作为您的成员,那么这可能是值得研究的。例如,在移动家庭中,而不是在描述每个细节的字段中,您希望将细节分组在一起。基本上,如果一个类中有数百个字段,那么您的设计中就有了一些问题,那么所有这些字段都必须有公共子组。

您可能需要查看本书中的。特别是听起来可能很合适。这应该会让您了解如何构造类。您可以在java中找到一些示例

我不确定你到底想要什么,或者你的
MobileHome
类实际上需要什么样的外观,但听起来你可能想要使用默认值。比如说,根据您的要求,抽象的
建筑
,至少有一扇门和一个房间。因此,您可以将两者初始化为
1
。此外,如果需要,还可以提供setter方法来更改这些设置。如果你有一个
TwoRoomHouse
,你可以根据默认值将它们初始化为
2
。哦,我忘了:如果你真的想到一个类,它需要数百个字段(成员变量),因此在构造函数中需要数百个参数,该类的设计似乎有一些根本性的错误。您是否已经有了一些包含大量参数的示例?我认为,如果将来会有一些复杂性,您真正需要的是更加灵活:。提供一个使用示例会有所帮助。