创建另一个Subclass java的构造函数

use*_*404 1 java inheritance constructor

如果我有班车:

public class Car {

    int weight;
    Car(){}

    public Car(int weight) {
        this.weight = weight;
    }
}
Run Code Online (Sandbox Code Playgroud)

还有另一个继承自Car的轿车:

 public class Sedan extends Car { 

     public Sedan(int weight) {
         super(weight);
     }
 }
Run Code Online (Sandbox Code Playgroud)

和继承自汽车的第三级吉普车:

public class Jeep extends Car {

    public Jeep(int weight) {
        super(weight);
    }
} 
Run Code Online (Sandbox Code Playgroud)

我怎么能这样说,当我说 Car mercedes = new Car(5000);

构造函数创建一个new Jeep或一个new Sedan取决于给定的权重:if( weight>3000),创建一个吉普车mercedes=new Jeep(weight);,否则创建一个轿车mercedes=new Sedan(weight);

Ler*_*eri 8

看来你想使用工厂模式.这意味着您创建单独的类,负责构建和返回相应的Car对象.

例如:

class CarFactory {
    public Car createCar(int weight) {
         if (weight < 3000) {
              return new Sedan(weight);
         } else {
              return new Jeep(weight);
         }
    }
}
Run Code Online (Sandbox Code Playgroud)

用法:

CarFactory carFactory = new CarFactory();
Car car = carFactory.createCar(yourDesiredWeight);
Run Code Online (Sandbox Code Playgroud)

这不仅可以帮助您解决问题,还可以帮助您以更好的方式组织代码.即删除了将从类操作的类创建汽车的责任.

注意:我强烈建议您阅读单一责任原则(简称SRP).

注2:似乎类Car需要是抽象的,因为它是所有派生类型的通用基类,并且如果直接初始化(public abstract class Car {...})则没有意义.