是否可以在Java中创建接口实例?
在某个地方我已经读过使用内部匿名类,我们可以这样做,如下所示:
interface Test
{
public void wish();
}
class Main
{
public static void main(String[] args)
{
Test t=new Test()
{
public void wish()
{
System.out.println("output: hello how r u");
}
};
t.wish();
}
}
cmd> javac Main.java
cmd> java Main
output: hello how r u
这里是否正确?
答案 0 :(得分:84)
您永远无法在java中实例化接口。但是,您可以通过接口类型引用实现接口的对象。例如,
public interface A
{
}
public class B implements A
{
}
public static void main(String[] args)
{
A test = new B();
//A test = new A(); // wont compile
}
您在上面所做的是创建一个实现该接口的Anonymous类。您正在创建一个匿名对象,而不是interface Test
类型的对象。
答案 1 :(得分:46)
是的,你的例子是正确的。匿名类可以实现接口,这是我唯一能想到的,你会看到一个实现没有“implements”关键字的接口的类。在这里查看另一个代码示例:
interface ProgrammerInterview {
public void read();
}
class Website {
ProgrammerInterview p = new ProgrammerInterview () {
public void read() {
System.out.println("interface ProgrammerInterview class implementer");
}
};
}
这很好用。取自本页:
http://www.programmerinterview.com/index.php/java-questions/anonymous-class-interface/
答案 2 :(得分:5)
Normaly,您可以为界面创建参考。但是你无法为接口创建一个实例。
答案 3 :(得分:4)
简短回答......是的。初始化变量时,可以使用匿名类。 看看this
答案 4 :(得分:3)
在我看来,你可以创建一个接口的引用变量,但是你不能像抽象类那样创建一个接口实例。
答案 5 :(得分:0)
是的,这是对的。你可以用内部的课来做。
答案 6 :(得分:0)
是的,我们可以,“匿名类使您能够使您的代码更简洁。它们使您能够同时声明和实例化类。它们就像本地类,除了它们没有名称” - {{ 3}}