如何使用父对象的构造函数创建子对象?(Java)



例如,我有一个Car类。当我创建一个汽车对象时,我希望传递我希望该汽车拥有的车轮数量,构造函数将从我传递给Car的构造函数的1-x车轮对象数量中创建Wheel对象。

如果您能提供任何帮助,我们将不胜感激!

父级为Car子级为Wheel

汽车与其车轮的关系是具有关系。汽车有轮子。通过继承建模在语义上是不正确的,因为继承是关系。汽车不是车轮具有关系必须通过组合建模。汽车有多个轮子。使用一个像数组一样的集合来固定每辆车的车轮:

class Wheel {

}

class Car {
// Use an array to hold the wheel objects
private Wheel[] wheels;
private String name;
public Car(String name, int wheelCount) {
this.name = name;
wheels = new Wheel[wheelCount];
for(int i = 0; i < wheelCount; i++) {
wheels[i] = new Wheel();
}
}
public void changeWheelAt(int index, Wheel wheel) {
wheels[index] = wheel;
}
public Wheel getWheelAt(int index) {
return wheels[index];
}
public Wheel[] getWheels() {
return wheels;
}


public String getCarName() {
return name;
}
public int getNumberOfWheels() {
return wheels.length;
}
}

我希望你并不是说Car类是Wheel的父类。这将是一种IS-A关系。我们确实知道一个轮子是IS-NOT-a汽车。

我们可能想在这里使用的是车轮和汽车之间的多对一合成(HAS-A(关系<大多数汽车都有轮子>

所以类似于:-

public class Car {
...
Set<Wheel> wheels;
} 

然后,您可以有一个构造函数,在其中您可以传递轮子的数量,并且集合将被初始化。

public class Car {
Car(int numOfWheels) {
wheels = new HashSet<>();
for(int i=0; i<numOfWheels; i++) {
wheels.add(new Wheel());
... // Other Wheel properties
}
}
...
Set<Wheel> wheels;
}

相关内容

  • 没有找到相关文章

最新更新