来自类和子类的不同静态字段

时间:2014-10-24 16:07:26

标签: java

我是Java的新手,我的英语不太好......所以请原谅我:)

我有一个超类:Genericresource,带有一个静态字段,用于计算创建的实例数,以及一个调用此值的方法:

public class Genericresource {
 private static int counter;
 public Genericresource() { counter++; }
 public static int howmany() { return counter; }
 //other useful code here
}

我想创建一些半完全相同的子类,每个子类用于特定的资源:

public class Type1Resource extends Genericresource {

// here specific code

}

现在,在主要课程中:

Genericresource a1 = new Genericresource();
Genericresource a2 = new Genericresource();
Type1Resource b = new Type1Resource();
Type1Resource b2 = new Type1Resource();
int howa = Genericresource.howmany();
int howb = Type1Resource.howmany();

我希望我使用两个不同的计数器静态字段,一个用于超类Genericresource,另一个用于子类Type1Resource。 我想要的结果是:howa = 2 howb = 2。 我的真实结果是:howa 4 howb 4。

所以即使我实例化了2个不同的类,我也使用相同的计数器静态字段,而我需要 我需要在不同的计数器静态字段中引用,每个子类一个,同时保持,超类的静态方法结构。 我该怎么办?

1 个答案:

答案 0 :(得分:3)

静态变量属于class,因此counterGenericresource中引用的Type1ResourceGenericresource.counter(通过隐式无参数构造函数)在子类中调用),因此在每个实例的两个实例之后它的值为4

static中声明Type1Resource计数器,如果您只想专门计算这些实例,请在特定的Type1Resource构造函数中递增它。

为清晰起见,我建议为新计数器使用不同的名称。