为了账号安全,请及时绑定邮箱和手机立即绑定

应该是内部类的问题

应该是内部类的问题

fafagagag 2016-10-16 04:08:31
1.这个代码错误原因是什么?2.如果是内部类的问题,为什么创建内部类对象c1,c2和访问内部类成员变量的时候,不提示错误?该怎么修改呢?谢谢各位
查看完整描述

1 回答

?
宇哥sss丶

TA贡献2条经验 获得超0个赞

第一个错误:java成员内部类中不能用静态变量。具体原因是:静态变量是要占用内存的,在编译时只要是定义为静态变量了,系统就会自动分配内存给他,而内部类是在宿主类编译完编译的,也就是说,必须有宿主类存在后才能有内部类,这也就和编译时就为静态变量分配内存产生了冲突,因为系统执行:运行宿主类->静态变量内存分配->内部类,而此时内部类的静态变量先于内部类生成,这显然是不可能的,所以不能定义静态变量!


第二个错误:是因为创建内部类对象时,必须先创建外部类的对象。这是因为非静态内部类对象有着指向其外部类对象的引用。可以先记住:要创建内部类对象就要先创建相应外部类的对象。


具体代码://img1.sycdn.imooc.com//5803257c0001d73b09220501.jpg


希望可以帮到你哟~

查看完整回答
反对 回复 2016-10-16
  • fafagagag
    fafagagag
    感谢您的回复! 创建内部类对象时,如果非静态就要依附外部类对象,静态则不一定。是这个意思吗? 为什么我在网上看到的代码,有些非静态内部类,可以直接在外部类的成员方法中直接new一个对象,而并没有报错?我提问中的c1,c2也是这样 另外请问下,这些底层方面的,可以推荐一本书籍吗。。谢谢
  • 1 回答
  • 1 关注
  • 1151 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信