0

我正在尝试从类型为interface.

    private Car Ferrari;
    Ferrari.startEngine();

Carinterface具有名为 的方法的类startEngine()

我也有一个实现的类Car,让我们调用它CarImplementation。所以当我打电话时Ferrari.startEngine(),我假设startEngine()CarImplementation 将被调用。

但是,在 Eclipse 中,我在startEngine(). 我收到一条错误消息说

未定义 Car 类型的 startEngine() 方法

当我startEngine()在我的接口和实现接口的类中都有它时,它是如何未定义的?

我还注意到,当我在 Ferrari 后面键入点后,我的startEngine()方法没有出现在 Eclipse 的内容辅助中。

有什么建议么?

4

2 回答 2

2

Ferrari不是 a Carnull直到你将它分配给一个实际的对象。

Car ferrari = new CarImplementation();
ferrari.startEngine(); // works

(另外,根据 Sun Java 标准,我将您的对象重命名为ferrari没有上限)

于 2012-07-27T13:05:30.293 回答
1

您需要创建一个实例CarImplementation来使用它的实现——接口没有它们定义的方法的实现。

所以如果它是一个非静态方法,你想试试这个:

Private Car ferrari = new CarImplementation();
ferrari.startEngine();
于 2012-07-27T13:01:43.450 回答