gpt4 book ai didi

java - 如何为子类提供静态字段?

转载 作者:行者123 更新时间:2023-12-01 10:20:59 27 4
gpt4 key购买 nike

我有一个名为 operation.java 的抽象父类(super class)和几个扩展该类并表示操作的子类。每个这样的子类应该包含一个规范化内容的数组,这些内容应该是静态的,因为它全局保存。我有以下示例:

abstract class Operation {

private static double[] normalizingConstants;

protected Operation() {
normalizingConstants = new double[10];
}
}

class AddOp extends Operation {

protected AddOp() {
super();
}
}

class MinusOp extends Operation {

protected AddOp() {
super();
}
}

每个子类是否都拥有自己的静态标准化常量?如果我调用 AddOp.normalizingConstants[0]MinusOp.normalizingConstant[0] 我想要不同的结果。如何实现这一目标?

最佳答案

Does each subclass hold its own static normalizingConstants?

不,只有一个normalizingConstants (Operation.normalizingConstants)。 static 字段与声明它们的相关联。

If I call AddOp.normalizingConstants[0] and MinusOp.normalizingConstant[0] I want different results. How can this be achieved?

如果您需要不同的normalizingConstants数组,则需要在子类中声明另一个静态变量,例如

class MinusOp extends Operation {

private static double[] normalizingConstants;
...

请注意,您的 normalizingConstants 字段只能从声明类中访问,因为它们被声明为 private

此外,您不应在构造函数中初始化静态数组 - 使用 static initializer反而。否则,每次创建类(或任何子类)的新实例时,都会重新初始化该数组。

关于java - 如何为子类提供静态字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35626272/

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