A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© chenguoyu520 中级黑马   /  2015-9-23 13:32  /  935 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Static Nested Class和Inner Class有什么不同?

2 个回复

倒序浏览
内部类可以直接访问外部类的成员,包括私有对象。
静态内部类(嵌套类)只能访问外部类的静态成员

外部类访问内部类,必须创建内部类对象:Outer.Inner in = new Outer().new Inner();
外部类访问嵌套类:1,如果嵌套类的成员都是静态的,可以直接调用: Outer.Inner.function();
                           2,如果嵌套类的成员不是静态的,需要创建Outer.Inner in = new Outer.Inner();
回复 使用道具 举报
381890216 发表于 2015-9-23 21:06
内部类可以直接访问外部类的成员,包括私有对象。
静态内部类(嵌套类)只能访问外部类的静态成员

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

我的理解是:非static的内部类总是由一个外部的对象生成,既然与对象有关,就没有静态的字段和方法,否则就与“静态成员无需对象即可直接调用”的概念冲突了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马