抽象クラスと 2 つのサブクラスがあります。すべてのクラスに関連する 4 つの定数があります。final を抽象クラスに配置するつもりでしたが、final 変数が継承されないことを理解していますか? すべてのクラスで定数を定義する必要がありますか (非効率的なようです)? または、定数をインスタント変数にするだけですか (良い考えのようには聞こえません)?
これについてどのような方法がありますか?
以下は、抽象クラスで定義されている場合、すべてのサブクラスで使用できます。
public static final Integer MYCONSTANT = 42;
また
static final Integer MYCONSTANT = 42;
また
protected static final Integer MYCONSTANT = 42;
2 つ目 (package-private) は、同じパッケージ内のクラスでのみ使用できます。3 番目 (保護) は、パッケージに関係なく、すべてのサブクラスで使用できます。
定数は子によって継承されます。あなたはそれらを持っていることを確認するprotected
かpublic
、子供たちがそれらにアクセスできるようにする必要があります.
abstract class A {
protected final static String FOO = "bar";
}
class B extends A {
somemethod() {
System.out.println("foo: " + FOO);
}
}
クラスとそのすべての子からアクセスできます。
はい、そうです。しかし、それらは一定であるべきなのでfinal and static
、static modifier
「コピー」が1つだけになるようにし、これがサブクラスでのみ使用される場合は、使用できるprotected
か、他のクラスからも作成する必要がありpublic
ます。