黑马程序员技术交流社区

标题: 关于内部类的一个问题 [打印本页]

作者: 刘一博    时间: 2014-6-8 10:56
标题: 关于内部类的一个问题
看了毕老师的视频,里面涉及到的知识点:当内部类中定义了静态成员,该内部类必须是静态的。
为什么必须是这样的,如何理解?



作者: 心灵的微幸福    时间: 2014-6-8 11:23
本帖最后由 心灵的微幸福 于 2014-6-8 11:26 编辑

我是这样理解的:静态变量会随着类的加载而加载,而非静态成员变量会随着对象的建立而加载。当内部类内部有静态成员的时候,内部类必须声明为静态的,因为非静态不能调用静态成员的。如果你的内部类是静态的,那么虚拟机就可以加载其内部的静态字段与方法,反之则不可以,加载都无法完成。
作者: 刘一博    时间: 2014-6-8 12:28
内部类中的静态方法存放在内存的什么位置,与内部类和外部类之间的位置有什么关系,能详细说下吗
作者: 西门吹风    时间: 2014-6-8 18:33
当成员内部类中定义有静态成员,无非就是希望这些静态成员在外部类加载时就加载到方法区,便于调用。而想加载这些内部类静态成员到方法区,那么在加载外部类时就必须先加载内部类,再加载内部类的静态成员,成员内部类就相当于外部类的成员,要想在加载外部类时也加载成员内部类,那么只有该内部类为静态才能做得到。
作者: 刘一博    时间: 2014-6-8 23:18
西门吹风 发表于 2014-6-8 18:33
当成员内部类中定义有静态成员,无非就是希望这些静态成员在外部类加载时就加载到方法区,便于调用。而想加 ...

可不可以理解为,成员内部类,没有被加载到内存中,但是需要加载成员内部类中的静态成员,这样就出现了矛盾
作者: TS__likewise    时间: 2014-6-9 13:17
一个碗就能称一碗水,不能两碗
作者: 小草君    时间: 2014-6-9 13:22
顶楼上正解................




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