如何使用 parent object 的构造函数创建 child object? (Java)

How do you create a child object with the constructor of parent object? (Java)

举个例子,我有一个Car class。当我创建一辆汽车 object 时,我想传递我希望该汽车拥有的车轮数量,并且构造函数将从 1-x 数量创建 Wheel objects wheel objects 我传递给 Car 的构造函数。

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

Parent 是 Car Child 是 Wheel

我希望你并不是真的意味着 Car class 是 Wheel 的父级。那将是一种 IS-A 关系。我们确实知道轮子不是汽车。

这里我们可能要用到的是Wheel和Car之间的多对一组合(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;
}

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

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;
    }
}