黑马程序员技术交流社区

标题: 内部类(java面试题) [打印本页]

作者: chenguoyu520    时间: 2015-9-23 13:32
标题: 内部类(java面试题)
Static Nested Class和Inner Class有什么不同?
作者: 381890216    时间: 2015-9-23 21:06
内部类可以直接访问外部类的成员,包括私有对象。
静态内部类(嵌套类)只能访问外部类的静态成员

外部类访问内部类,必须创建内部类对象:Outer.Inner in = new Outer().new Inner();
外部类访问嵌套类:1,如果嵌套类的成员都是静态的,可以直接调用: Outer.Inner.function();
                           2,如果嵌套类的成员不是静态的,需要创建Outer.Inner in = new Outer.Inner();

作者: 381890216    时间: 2015-9-23 21:11
381890216 发表于 2015-9-23 21:06
内部类可以直接访问外部类的成员,包括私有对象。
静态内部类(嵌套类)只能访问外部类的静态成员

非静态内部类不能含有任何static声明的语句。(只有顶层的类和静态内部类里面才能用有static语句)

我的理解是:非static的内部类总是由一个外部的对象生成,既然与对象有关,就没有静态的字段和方法,否则就与“静态成员无需对象即可直接调用”的概念冲突了。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2