gpt4 book ai didi

java - Java 中的内部/静态嵌套类 - 外部类的名称

转载 作者:行者123 更新时间:2023-11-30 10:31:30 25 4
gpt4 key购买 nike

请问在引用内部类或静态嵌套类时,什么时候需要显式写出外部类的名称。

例如:

class B {
static class Inner {
int a = 10;
}
}

class Test extends B {
public static void main(String[] args) {
Test t = new Test();
Inner obj = new Inner();
System.out.println(obj.a);
}
}

想问的是什么情况下需要这样写:

B.Inner obj = new B.Inner();

代替

Inner obj = new Inner();

最佳答案

对于 static 嵌套类(正如 G. Fiedler 在他的回答中提到的那样)当您在 B 的范围内时,您可以编写 new Inner()

您还可以从 Test 中直接引用 Inner,因为它扩展了 B

在所有其他情况下,您需要使用 B.Innernew B.Inner()

内部类 - 根据定义不是 static - 被不同地初始化。让我们看一下这个例子 B:

class B {
public class Inner {
...
}
}

内部类总是绑定(bind)到外部类的实例。这意味着在这种情况下,必须有一个 B 的实例,我们才能实例化 Inner。所以让我们这样做:

B b = new B();

顺便说一句,我假设我们目前在 B 范围之外的某个地方

为了创建 Inner 的实例,我们使用 B 的实例并编写:

B.Inner inner = b.new Inner();

但是,如果我们在 B 内部(在一个非静态 方法中),我们可以简单地写

Inner inner = new Inner();

因为我们 - 或者更确切地说是编译器 - 知道 B 的实例必须存在才能绑定(bind)到此 inner

关于java - Java 中的内部/静态嵌套类 - 外部类的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43172739/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com