在研究Java中的OOP概念和内部类时遇到一个问题。
假设有一个CarFactory
类,它具有返回buildCar()
的Car
方法。该工厂构建了几个实现Models
的Car
。
因此,我创建了一个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
的子类。