如何使用 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;
}
}
举个例子,我有一个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;
}
}