constructor que crea otra subclase de Java

Si tengo un auto de clase:

public class Car {

    int weight;
    Car(){}

    public Car(int weight) {
        this.weight = weight;
    }
}

y otro sedán de clase que hereda de Car:

 public class Sedan extends Car { 

     public Sedan(int weight) {
         super(weight);
     }
 }

y un Jeep de tercera clase que también hereda de Car:

public class Jeep extends Car {

    public Jeep(int weight) {
        super(weight);
    }
} 

¿Cómo puedo hacerlo para que cuando diga Car mercedes = new Car(5000);

El constructor crea una new Jeepo una new Sedandependiendo del peso dado: ¿ if( weight>3000)crear un Jeep mercedes=new Jeep(weight);, de lo contrario, crear un sedán mercedes=new Sedan(weight);?

Respuesta 1

No puedes hacer esto como quieras. Lo que estás buscando es el patrón abstracto de fábrica

    public abstract class AbstractCarFactory{
      public static Car createCar(int weight){
        Car ret=null;
          if (weight>3000) {
            car=new Jeep(weight);
          } else {
            car=new Sedan(weight);
          }
        return car;
      }
    } 

Agregue otra opción (que no recomiendo y es una forma terrible)

Puede fusionar el patrón de fábrica con un patrón de delegación:

public class Car {
    private Car car;
    protected Car() {

    }
    public Car(int weight) {
        if (weight>3000) {
            car=new Jeep(weight);
        } else {
            car=new Sedan(weight);
        }
    }
    public String getType() {
        return car.getType();
    }
}

La clase Car construirá un Jeep o Sedan y le delegará todas las llamadas.

public class Jeep extends Car {
    int weight;

    public Jeep(int weight) {
        super();
        this.weight = weight;
    }
    public String getType() {
        return "JEEP";
    }
}

De nuevo, esto es realmente artificial y no debe hacerse.

Respuesta: 2

No puedo ver qué está mal, estoy tratando de pasar la matriz de gameBoard (¿no es esta una matriz? - ver constructor) en el método findPiece, pero dice que no es una matriz, ¿qué debería pasar aquí? ...

¿Hay alguna forma viable de probar qué excepción fue capturada por los bloques catch en el siguiente método Java que se encuentra a continuación, sin cambiar su implementación actual? public String methodToTest (String ...

He creado un clasificador de clasificación de documentos siguiendo el ejemplo de MALLET aquí http://mallet.cs.umass.edu/classifier-devel.php Lo que me gustaría hacer a continuación es obtener las características más influyentes para ...

Tengo un servidor web Spring y quiero crear una sala de chat para cada N (por ejemplo, 10) clientes que soliciten mi controlador. Cada solicitud al servidor tiene su propio hilo, cómo recopilar cada N ...