我有一个名为 operation.java 的抽象超类和几个扩展该类并表示操作的子类。每个这样的子类应该包含一个规范化内容的数组,该数组应该是静态的,因为它全局保存。我有以下示例:
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]
and MinusOp.normalizingConstant[0]
我想要不同的结果。如何才能实现这一目标?
每个子类是否都拥有自己的静态标准化常量?
不,只有一个normalizingConstants
(Operation.normalizingConstants
). static
字段绑定到class它们被声明的地方。
如果我调用 Adobe.normalizing Constants[0] 和 Minus.normalizing Constant[0] 我想要不同的结果。如何才能实现这一目标?
如果您需要不同的normalizingConstants
数组,您需要在子类中声明另一个静态变量,例如
class MinusOp extends Operation {
private static double[] normalizingConstants;
...
请注意,您的normalizingConstants
字段只能从声明类内部访问,因为它们是声明的private
.
另外,您不应该在构造函数中初始化静态数组 - 使用静态初始化器 https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html反而。否则,每次创建类(或任何子类)的新实例时,都会重新初始化该数组。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)