黑马程序员技术交流社区
标题:
java 不能从嵌套类的对象中访问非静态的外围类对象吗?
[打印本页]
作者:
陆泽峰
时间:
2012-2-27 14:31
标题:
java 不能从嵌套类的对象中访问非静态的外围类对象吗?
java 不能从嵌套类的对象中访问非静态的外围类对象吗?
作者:
黑马胡林
时间:
2012-2-27 14:35
本帖最后由 黑马胡林 于 2012-2-27 14:36 编辑
如果你不需要内部类对象与其外围类对象之间有联系,那你可以将内部类声明为static。这通常称为嵌套类(nested class)。
想要理解static应用于内部类时的含义,你就必须记住,普通的内部类对象隐含地保存了一个引用,指向创建它的外围类对象。然而,当内部类是static的时,就不是这样了。嵌套类意味着:
1. 要创建嵌套类的对象,并不需要其外围类的对象。
2. 不能从嵌套类的对象中访问非静态的外围类对象。
生成一个静态内部类不需要外部类成员:这是静态内部类和成员内部类的区别。
静态内部类的对象可以直接生成:Outer.Inner in = new Outer.Inner();而不需要通过生成外部类对象来生成。
这样实际上使静态内部类成为了一个顶级类(正常情况下,你不能在接口内部放置任何代码,但嵌套类可以作为接口的一部分,因为它是static 的。
只是将嵌套类置于接口的命名空间内,这并不违反接口的规则)
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2