有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java静态内部类与非静态外部类

为什么在主楼里面。类来实例化一个Foo类(它的内部类),我必须用static关键字来指定它,但是如果我将这个类设置为外部类,那么在没有“static”的情况下它是可能的吗

public class Main {

    public static void main(String[] args) {
        Foo foo = new Foo();
    }

//    class Foo { // to make it work I have to add 'static'
//    }
}

但如果是福。类不是Main的内部类。课堂上,它起作用了

public class Main {

    public static void main(String[] args) {
        Foo foo = new Foo();
    }

}

class Foo {
}

共 (1) 个答案

  1. # 1 楼答案

    如果将该类声明为非静态内部类,则它属于外部类的实例。在静态main方法中没有实例(因为该方法是静态的),因此不允许访问该类

    如果将其声明为外部类,那么Foo类只是一个普通类,可以从静态和非静态方法访问它,因为它不再属于外部类的实例