日期:2014-05-20  浏览次数:20723 次

为什么内部类不能有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型常量。

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

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