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 楼答案
如果将该类声明为非静态内部类,则它属于外部类的实例。在静态main方法中没有实例(因为该方法是静态的),因此不允许访问该类
如果将其声明为外部类,那么Foo类只是一个普通类,可以从静态和非静态方法访问它,因为它不再属于外部类的实例