What is a static nested class?
Possible Duplicate:
Java: Static vs non static inner class
什么是静态嵌套类?静态嵌套类和非静态嵌套类有什么区别?
静态内部类是嵌套在另一个具有static修饰符的类中的类。它与顶级类几乎完全相同,只是它可以访问在其内部定义的类的私有成员。
1 2 3 4 5 6 7
| class Outer {
private static int x;
static class Inner1 {
}
class Inner2 {
}
} |
类Inner1是一个静态的内部类。类Inner2是一个非静态的内部类。两者之间的区别在于,非静态内部类的实例永久附加到Outer的实例上——没有Outer,就不能创建Inner2。不过,您可以独立地创建Inner1对象。
Outer、Inner1和Inner2中的代码都可以访问x,其他代码不允许访问。
- 我认为你错了:"除了它有权访问它在"Youwill get compile time error"中定义的类的私有成员,不能对非静态字段进行静态引用",静态类无权访问外部/封闭类的任何非静态成员。"
- 您将访问控制的概念与实际拥有成员进行访问混淆了。允许静态内部类中的代码以与封闭类的静态方法中的代码完全相同的方式查看封闭类的所有成员;如果静态代码具有要使用的封闭类的实例,则可以查看该实例的所有成员。
- 好吧,明白你的意思,我的错。
- 可能显示outer2,一个在外部类之外的类,并与inner1/inner2进行比较。拜托。
- @乔洛先生又加了一点。
- @我的意思是gist.github.com/the1Mills/fa0e6a49008368d4ab279e8c0fc65767,但它可能不在操作范围内。请随意评论gist thread tho,thx。
参见Java内部类和静态嵌套类