gpt4 book ai didi

java - 类和子类的不同静态字段

转载 作者:行者123 更新时间:2023-12-01 22:38:24 25 4
gpt4 key购买 nike

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

我有一个父类(super class):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();

我希望我使用两个不同的 counter 静态字段,一个用于父类(super class) Genericresource,一个用于子类 Type1Resource。我想要的结果是:howa = 2 howb = 2。我的真实结果是:howa 4 howb 4。

因此,即使我实例化了 2 个不同的类,我也使用相同的 counter 静态字段,而我需要相反,我需要引用不同的计数器静态字段,每个子类一个,同时维护父类(super class)的静态方法结构。我该怎么办?

最佳答案

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

Type1Resource 中声明一个 static 计数器,如果您只想专门对这些实例进行计数,则可以在特定的 Type1Resource 构造函数中递增该计数器。

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

关于java - 类和子类的不同静态字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26551854/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com