考虑下面的类:
package test;
public class Container {
public class Contained {
public void foo() {
System.out.println("printed");
}
}
}
和Main.java:
package test;
public class Main {
public static void main(String[] args){
Container c = new Container();
}
}
因此,我们在这里创建了 Container
类的实例。这是否意味着我们也创建了内部类的实例?我想,是的,确实如此,因为内部类是一个非静态嵌套类。但是我们怎样才能访问内部类的实例呢?我们可以在 Container
类之外创建实例吗?
如果您提供一些对 JLS 的引用,将会非常有用。 .
最佳答案
要实例化内部类,必须先实例化外部类。然后,使用以下语法在外部对象中创建内部对象:
OuterClass.InnerClass innerObject = outerObject.new InnerClass();
所以在你的情况下它会是
Container container = new Container();
Container.Contained containedClass = container.new Contained();
这称为内部类。在内部类中您可以访问容器类成员
要为静态嵌套类创建对象,请使用以下语法:
OuterClass.StaticNestedClass nestedObject = new OuterClass.StaticNestedClass();
这称为静态嵌套类。在静态嵌套类中,您无法访问容器类实例成员,只能访问静态成员
关于java - 理解Java中的内部类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27763368/