7

抽象クラスと 2 つのサブクラスがあります。すべてのクラスに関連する 4 つの定数があります。final を抽象クラスに配置するつもりでしたが、final 変数が継承されないことを理解していますか? すべてのクラスで定数を定義する必要がありますか (非効率的なようです)? または、定数をインスタント変数にするだけですか (良い考えのようには聞こえません)?

これについてどのような方法がありますか?

4

3 に答える 3

10

以下は、抽象クラスで定義されている場合、すべてのサブクラスで使用できます。

public static final Integer MYCONSTANT = 42;

また

static final Integer MYCONSTANT = 42;

また

protected static final Integer MYCONSTANT = 42;

2 つ目 (package-private) は、同じパッケージ内のクラスでのみ使用できます。3 番目 (保護) は、パッケージに関係なく、すべてのサブクラスで使用できます。

于 2012-05-03T16:39:21.270 に答える
3

定数は子によって継承されます。あなたはそれらを持っていることを確認するprotectedpublic、子供たちがそれらにアクセスできるようにする必要があります.

abstract class A {
    protected final static String FOO = "bar";
}
class B extends A {
    somemethod() {
        System.out.println("foo: " + FOO);
    }
}

クラスとそのすべての子からアクセスできます。

于 2012-05-03T16:38:14.047 に答える
0

はい、そうです。しかし、それらは一定であるべきなのでfinal and staticstatic modifier「コピー」が1つだけになるようにし、これがサブクラスでのみ使用される場合は、使用できるprotectedか、他のクラスからも作成する必要がありpublicます。

于 2012-05-03T16:46:48.540 に答える