gpt4 book ai didi

java - 创建由子类初始化的最终字段

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

我有一个抽象类,其子类共享一个方法,该方法按特定增量递增值,并受下限和上限限制。每个子类都有自己的增量和自己的边界这些值都应该声明为final,但是如果我将它们声明为final,它们怎么能被子类初始化。

下面是我能想到的让它工作的唯一方法,但看起来相当麻烦。

public abstract class ClassA {
protected int LOWER_LIMIT;
protected int UPPER_LIMIT;
protected int INCREMENT;

public ClassA() {
}
}

public class ClassB extends ClassA {
public ClassB() {
super();
this.LOWER_LIMIT = 0;
this.UPPER_LIMIT = 4200;
this.INCREMENT = 15;
}
}

public class ClassC extends ClassA {
public ClassC() {
super();
this.LOWER_LIMIT = 0;
this.UPPER_LIMIT = 99;
this.INCREMENT = 1;
}
}

最佳答案

最常见的模式是这样的。您还可以强制子类定义该值。

public abstract class Base {
final protected int field1;
final protected int field2;
final protected int field3;

protected Base(int field1, int field2, int field3) {
this.field1 = field1;
this.field2 = field2;
this.field3 = field3;
}

}

public class Subclass extends Base {
public Subclass () {
super(0, 4200, 15);
}
}

关于java - 创建由子类初始化的最终字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71402581/

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