-1

オブジェクト指向プログラミングについて質問です。サブクラスで異なる値を持つ属性がある場合。スーパークラスで抽象アクセサーを作成し、サブクラスでオーバーライドする必要があります。または、基本クラスで保護されたインスタンス変数を作成し、サブクラスのコンストラクターでデフォルト値を割り当てますか?

コード例のコードを見てみましょう。

選択肢 1:

class BaseClass {
    public abstract int GetFoo();
}

class SubClass {
    public int GetFoo() {
        return -1;
    }
}

選択肢 2:

class BaseClass {
    protected int _foo;

    public int GetFoo() {
        return _foo;
    }
}

class SubClass {
    public SubClass() {
        _foo = -1;
    }
}

または任意のアイデア?

4

1 に答える 1

1

パッケージプライベートでカプセル化の原則に違反する保護されたメンバーをクラスに作成する代わりに、派生クラスでオーバーライドして別の値を提供できるゲッターを提供する最初のアプローチを採用します。

于 2012-09-28T02:34:08.627 に答える