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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘一博 中级黑马   /  2014-6-8 10:56  /  989 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

看了毕老师的视频,里面涉及到的知识点:当内部类中定义了静态成员,该内部类必须是静态的。
为什么必须是这样的,如何理解?


6 个回复

正序浏览
顶楼上正解................
回复 使用道具 举报
一个碗就能称一碗水,不能两碗
回复 使用道具 举报
西门吹风 发表于 2014-6-8 18:33
当成员内部类中定义有静态成员,无非就是希望这些静态成员在外部类加载时就加载到方法区,便于调用。而想加 ...

可不可以理解为,成员内部类,没有被加载到内存中,但是需要加载成员内部类中的静态成员,这样就出现了矛盾
回复 使用道具 举报
当成员内部类中定义有静态成员,无非就是希望这些静态成员在外部类加载时就加载到方法区,便于调用。而想加载这些内部类静态成员到方法区,那么在加载外部类时就必须先加载内部类,再加载内部类的静态成员,成员内部类就相当于外部类的成员,要想在加载外部类时也加载成员内部类,那么只有该内部类为静态才能做得到。
回复 使用道具 举报
内部类中的静态方法存放在内存的什么位置,与内部类和外部类之间的位置有什么关系,能详细说下吗
回复 使用道具 举报
本帖最后由 心灵的微幸福 于 2014-6-8 11:26 编辑

我是这样理解的:静态变量会随着类的加载而加载,而非静态成员变量会随着对象的建立而加载。当内部类内部有静态成员的时候,内部类必须声明为静态的,因为非静态不能调用静态成员的。如果你的内部类是静态的,那么虚拟机就可以加载其内部的静态字段与方法,反之则不可以,加载都无法完成。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马