如果我有一辆汽车:
public class Car {
int weight;
Car(){}
public Car(int weight) {
this.weight = weight;
}
}
和另一个继承自 Car 的 Sedan 类:
public class Sedan extends Car {
public Sedan(int weight) {
super(weight);
}
}
还有一辆同样继承自 Car 的三等吉普车:
public class Jeep extends Car {
public Jeep(int weight) {
super(weight);
}
}
当我说 Car mercedes = new Car(5000);
构造函数根据给定的重量创建new Jeep
或new Sedan
:if(weight>3000)
,创建Jeep mercedes=new Jeep(weight);
,否则创建轿车 mercedes=new Sedan(weight);
?
最佳答案
您似乎想使用 factory pattern .这意味着您创建单独的类,负责构建和返回相应的 Car
对象。
例如:
class CarFactory {
public Car createCar(int weight) {
if (weight < 3000) {
return new Sedan(weight);
} else {
return new Jeep(weight);
}
}
}
用法:
CarFactory carFactory = new CarFactory();
Car car = carFactory.createCar(yourDesiredWeight);
这不仅可以帮助您解决问题,还可以帮助您更好地组织代码。 IE。消除了从将与类一起操作的类中创建汽车的责任。
注意:我强烈建议您继续阅读 single responsibility principle (SRP, for short) .
注意 2: 类 Car
似乎需要抽象,因为它是所有派生类型的通用基类,如果直接初始化则没有意义(public抽象类汽车 {...}
).
关于java - 创建另一个子类java的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22229814/