Java создание экземпляра обобщенного типа c, который реализует интерфейс - PullRequest
0 голосов
/ 09 апреля 2020

У меня возник вопрос при изучении OOP концепции и внутренних классов в Java.

Допустим, есть класс CarFactory, и у него есть метод buildCar(), который возвращает Car , Эта фабрика строит несколько Models, которые реализуют Car.

. Поэтому я создал Car интерфейс и Models орудие Car.

Как вы можете вернуть Car это интерфейс?

Я знаю, что могу создать экземпляр Model, который реализует Car, но я хочу создать общий метод, который возвращает любой Model, который реализует Car.

CarFactory. java

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

Car. 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");  
    }
  }
}

1 Ответ

0 голосов
/ 09 апреля 2020

В Java вы не можете инициализировать интерфейсы. Я предлагаю вам изучить шаблон проектирования Abstract Factory.

Для вашего случая вам потребуется интерфейс AbstractCarFactory, который содержит метод Car buildCar. Затем вы можете создать подклассы AbstractCarFactory для каждого типа автомобиля.

...