Java中没有接口的构造函数?

oli*_*dev 2 java

在Java中,如果我有一个接口:

public interface MyInterface{
}
Run Code Online (Sandbox Code Playgroud)

然后MyInterface实现是:

class MyClass implements MyInterface {
    public MyClass(int a) {
    }
}
Run Code Online (Sandbox Code Playgroud)

所以我的意思是,如果用户想要MyInterface使用构造函数声明一个实例:

MyInterface mine = new MyInterface(2);
Run Code Online (Sandbox Code Playgroud)

那不可能吧?

aio*_*obe 18

MyInterface mine = new MyInterface(2);
Run Code Online (Sandbox Code Playgroud)

那不可能吧?

那就对了.你永远不能做类似的事情

MyInterface mine = new MyInterface(2);
Run Code Online (Sandbox Code Playgroud)

之后new你必须选择一个实现了接口(*) ,如MyClass:

MyInterface mine = new MyClass(2);
Run Code Online (Sandbox Code Playgroud)

为什么?
您可以将接口视为类的属性.类比是形容词,例如"红色".创造一个红色的球(new RedBall())或红色的汽车new RedCar()(new Red())是完全合理的,但只是创造"红色"()没有意义("红色是什么?").

(*)您可以通过执行创建实时接口的匿名类,new MyInterface() { ... }但从技术上讲,您仍在实例化类.