为什么可以在类定义内部实例化类?

17 浏览
0 Comments

为什么可以在类定义内部实例化类?

一位(对Java非常陌生的)同事今天过来问了一个看似非常简单的问题。不幸的是,我在试图解释这个问题时做得非常糟糕。他手上有一本书,书中有一段代码看起来像这样:

class XCopy {
    public static void main(String[] args) {
        XCopy x = new XCopy(); // 1
        x.doIt();
    }
    public void doIt() {
        // Some code...
    }
}

他对第一行感到困惑。他想知道的是为什么在类XCopy的定义中可以创建XCopy的一个新实例。他认为这样会导致某种前向引用错误。毕竟,我们还没有完成声明类XCopy的过程,那么我们怎么能创建一个实例呢?

我当然知道这是有效的代码,但是当我试图解释给他听时,我发现自己回答得支支吾吾,恐怕比他刚开始时更加困惑了。我想听听其他人对为什么这样可以的解释。

有什么想法吗?为什么可以在类的定义中实例化一个类的实例呢?

0