-1

在 Java 中,HashSetSet接口的实现,它允许我们这样做:

Set<String> set = new HashSet<String>();

所以如果我创建一个接口IFruit和一些实现如下

public interface IFruit {
    public String getColour();
    /* more methods */
}
public class Apple implements IFruit {
    public String getColour() {
        return "red";
    }
}
public class Banana implements IFruit {
    public String getColour() {
        return "yellow";
    }
}

那我为什么不能这样做?

IFruit apple1 = new Apple()

我正在使用日食。接口和两个类也是同一个包中的不同类文件。我试图在同一个项目的不同包中的另一个类中使用它们。当我尝试像这样实例化它时会出现编译错误:

public class InterfaceTest {
    public static void main(String[] args) {
        IFruit newFruit = new Apple();
    }
}

但奇怪的是,如果我将所有内容放在一个文件中,它就可以工作!

4

1 回答 1

1

编译器不是很聪明。如果你传入一个Car对象怎么办?还是清单?那些是水果吗?

将声明更改public class Apple{为:

public class Apple implements IFruit {

编辑:确保您导入IFruitApple.

于 2013-10-12T18:55:10.287 回答