在研究Java中的OOP概念和内部类时遇到一个问题。

假设有一个CarFactory类,它具有返回buildCar()Car方法。该工厂构建了几个实现ModelsCar

因此,我创建了一个Car接口,并且该Models实现了Car

如何返回作为接口的Car

我知道我可以实例化实现Car的Model,但是我想创建一个通用方法,该方法返回实现Model的任何Car

CarFactory.java

public class CarFactory {
  Car buildCar() {
    return new Car();  // ??? I cannot do this
  }
}


汽车.java

public interface Car {
  abstract class Construct {
    abstract void constructCar();
  }
  void turn();
  void stop();
  void accelerate();
  ...
}


ModelExample.java

public class ModelExample implements Car {
  static CarFactory factory;

  public ModelExample() {
    this.factory = new CarFactory();
  }

  class Construct extends Car.Construct {
    void constructCar() {
      System.out.println("Model Example constructed");
    }
  }
}

最佳答案

在Java中,您无法初始化接口。我建议您研究“抽象工厂”设计模式。

对于您的情况,您需要一个接口AbstractCarFactory,其中包含方法Car buildCar。然后,您可以为每种汽车创建AbstractCarFactory的子类。

10-08 12:53