首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

为何内部类不能有static成员

2012-09-03 
为什么内部类不能有static成员?class father{class child{static int s_InstanceCount}}假如我用父类的对

为什么内部类不能有static成员?
class father{
  class child{
  static int s_InstanceCount;
  }
}

假如我用父类的对象创建若干个子类的实例,每创建一个子类的实例让s_InstanceCount加一,来计算有了多少个子类实例。为什么不行呢,java不让在子类里面有static方法和成员,这个限定是为了什么?

[解决办法]
这个代码看起来像内部类啊

子类不是应该用extends father()的吗
[解决办法]
+1+1+1
[解决办法]
内部类是非静态的,除了要依靠外部类实例,还要依赖内部类实例,静态常量是不要类实例的,在编译时就分配好了内存,且final类型可以离开实例存活一段时间。所以非静态内部类只能有静态的final型常量。
[解决办法]
把s_InstanceCount变量定义在“父类”中。内部类能访问外部类的变量。
[解决办法]

探讨
内部类是非静态的,除了要依靠外部类实例,还要依赖内部类实例,静态常量是不要类实例的,在编译时就分配好了内存,且final类型可以离开实例存活一段时间。所以非静态内部类只能有静态的final型常量。

[解决办法]
改成静态内部类
[解决办法]
探讨
内部类是非静态的,除了要依靠外部类实例,还要依赖内部类实例,静态常量是不要类实例的,在编译时就分配好了内存,且final类型可以离开实例存活一段时间。所以非静态内部类只能有静态的final型常量。

[解决办法]
探讨
class father{
class child{
static int s_InstanceCount;
}
}

假如我用父类的对象创建若干个子类的实例,每创建一个子类的实例让s_InstanceCount加一,来计算有了多少个子类实例。为什么不行呢,java不让在子类里面有static方法和成员,这个限定是为了什么?

[解决办法]
探讨
引用:
引用:
内部类是非静态的,除了要依靠外部类实例,还要依赖内部类实例,静态常量是不要类实例的,在编译时就分配好了内存,且final类型可以离开实例存活一段时间。所以非静态内部类只能有静态的final型常量。

说的不错,不过内部类里定义成final的话不就是常量了吗。。。。。
你可以把内部类定义成静态的
class father{
static ……

[解决办法]
探讨
引用:
内部类是非静态的,除了要依靠外部类实例,还要依赖内部类实例,静态常量是不要类实例的,在编译时就分配好了内存,且final类型可以离开实例存活一段时间。所以非静态内部类只能有静态的final型常量。

你的回复有点偏(个人感觉),内部类在使用之前首先你要确定使用什么样的内部类 下面的是复制百度的

内部类分为: 成员内部类、静态嵌套类、方法内部类、匿名内部类。   ……

热点排行