【问题标题】:Does the java compiler internally create constructors for interfaces? [duplicate]java 编译器是否在内部为接口创建构造函数? [复制]
【发布时间】:2018-03-20 06:12:45
【问题描述】:

下面是我的一个简单程序:

interface X {}

public class Y implements X {
    public static void main(String[] args) {
        X x = new Y();
    }
}

现在,据我所知,如果 is-a 变量 x 将能够保存 Y 的对象类型YX 之间存在关系。也就是说类Y是一种接口X

但是我们知道接口不能被实例化,也不能有构造函数。然后编译器会在 .class 文件中为接口创建构造函数吗?

【问题讨论】:

    标签: java


    【解决方案1】:

    但是我们知道接口不能被实例化,也不能有构造函数。然后编译器会在 .class 文件中为接口创建构造函数吗?

    没有。

    这里不是实例化 X,而是实例化对象 Y 并将其分配给 X,因为 Y 属于 X 类型。

    范式称为programming to interfaces

    【讨论】:

    • 谢谢。那么,Y 实现 X 是否意味着 Y 是 X 的一种类型?如果是,那就意味着接口只是抽象类的另一种形式。
    • @Moses 是的。你的理解是正确的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-30
    • 1970-01-01
    • 2012-10-07
    相关资源
    最近更新 更多