黑马程序员技术交流社区
标题:
成员内部类为什么不可以有静态属性?
[打印本页]
作者:
李深山
时间:
2012-3-19 00:06
标题:
成员内部类为什么不可以有静态属性?
高手回答下,我想不通成员内部类为什么不可以有静态属性?
作者:
叶绍亮
时间:
2012-3-19 00:09
看你问的问题我搜的 希望能帮到你
是内存分配导致的。
这么说吧,静态的对象,在内存中实默认实例化的,在加载的时候就会存放到内存中。
也就是可以直接调用而不需要手动实例化。
理解这个就不难理解你说的问题了。
首先内部的静态类他是不能直接被实例化的。你必须实例化外部类才能实例化它。而外部类不是默认加载的,他只有在手动实例化之后才有内存分配。
这时问题出现了。既然静态对象是默认加载,那么静态内部类应该先于外部类被加载到内存中。
那么这是又和我们之前的一个结论相反(首先内部的静态类他是不能直接被实例化的。你必须实例化外部类才能实例化它。)所以这种写法是错误的。
作者:
贠(yun)靖
时间:
2012-3-19 02:07
简单说 被static修饰的成员属性和方法 都是优先于对象存在的。
如果你的内部类用static修饰的话,你怎么调用它呢? 是用外部类名调用或者外部类对象调用吧?
这显然违背了静态优先于对象加载到内存的规则了
作者:
朱亚安
时间:
2012-3-19 02:22
引用 之前一个类似话题----一哥们的解释你看看吧
被静态修饰的属性优先于对象存在,随着类的加载而加载,生命周期长,这时内部类还未被创建,并且被静态修饰的属性存在于方法区中,不会随内部类的使用完毕而销毁,浪费内存。
作者:
OMG
时间:
2012-3-19 12:09
成员内部类的变量和方法,有必要静态修饰吗?
如果需要静态修饰,那么就对内部类的类名进行静态修饰,这样内部类就静态化了;
内部类可以静态初始化,其内部的成员也可以静态初始化了;
作者:
刘元明
时间:
2012-3-19 12:24
当内部类中成员被定义为静态的时候,该内部类也必须是静态的,这样该内部类就不可以访问
外部类中的非静态的成员,只能访问静态成员,出现了很大局限性
作者:
泮和顺
时间:
2012-3-19 12:45
成员内部类为什么不可以有静态属性?如果成员内部类是静态的 是可以由静态属性的成员的
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2