我有一個帶有子類的抽象類,這些子類共享一個以特定增量遞增值的方法,并受下限和上限的限制。每個子類都有自己的增量和邊界。這些值都應該宣告為 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;
}
}
uj5u.com熱心網友回復:
很常見的模式是這樣的。您還強制子類定義值。
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);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/441592.html
下一篇:如何正確捕獲另一個類的例外?
