gpt4 book ai didi

Java内部类和静态嵌套类

转载 作者:行者123 更新时间:2023-11-29 02:58:18 25 4
gpt4 key购买 nike

Java 中内部类和静态嵌套类的主要区别是什么?设计/实现是否在选择其中一个方面发挥作用?

最佳答案

来自Java Tutorial :

Nested classes are divided into two categories: static and non-static. Nested classes that are declared static are simply called static nested classes. Non-static nested classes are called inner classes.

使用封闭类名访问静态嵌套类:

OuterClass.StaticNestedClass

例如,要为静态嵌套类创建对象,请使用以下语法:

OuterClass.StaticNestedClass nestedObject = new OuterClass.StaticNestedClass();

作为内部类实例的对象存在于外部类的实例中。考虑以下类:

class OuterClass {
...
class InnerClass {
...
}
}

InnerClass 的实例只能存在于 OuterClass 的实例中,并且可以直接访问其封闭实例的方法和字段。

要实例化内部类,必须先实例化外部类。然后,使用以下语法在外部对象中创建内部对象:

OuterClass outerObject = new OuterClass()
OuterClass.InnerClass innerObject = outerObject.new InnerClass();

参见:Java Tutorial - Nested Classes

为了完整起见,还有一个类似 inner class without an enclosing instance 的东西。 :

class A {
int t() { return 1; }
static A a = new A() { int t() { return 2; } };
}

这里,new A() { ... } 是一个在静态上下文中定义的内部类,并且没有封闭实例。

关于Java内部类和静态嵌套类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59327529/

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