1

誰かが質問を理解していない場合はお知らせください。以下の質問を組み立てるために最善を尽くしました。パターンを生成するための親クラスに共通のメソッドがあります。再利用性のために、このメソッドを親クラスの下に保持することを考えました。

メソッド内で、いくつかの変数を使用します。なので、generatePatternメソッドにオブジェクトをパラメータとして渡したほうがいいと思いました。しかし、変数はオーバーライドできないため、これらのサブクラスからそれぞれの変数を使用するにはどうすればよいでしょうか? サブクラスを使用する以外のJavaの他の機能はありますか? そのような場合、パラメーターとしての「ジェネリック型」は機能しますか?

class Parent {
    int var1;
    String[] values;

    void generatePattern(Parent obj1) {
        // This will not make use of respective values of 
        // subclass object that is passed I guess.
        newPattern(obj1.values, obj1.var1);    
    }
}

class AscendSubClass extends Parent {
    int var1 = 5;
    String[] values = {"S", "R"};
}

class DescendSubClass extends Parent {
    int var1 = 10;
    String[] values = {"N", "D"};
}

上記の AscendSubClass または DescendSubClass のいずれかを generatePattern() に渡すことができます。このメソッド内で、変数 var1、値、およびサブクラスの他の多くの変数を使用する必要があります。これらの変数は同じ型で同じ名前ですが、値は異なり、サブクラスによって異なります。メソッドが変更されないように、これらの変数を generatePattern() で参照するにはどうすればよいですか? メソッドのパラメーターとして変数を作成するか、if/else ステートメントを使用することでこれを実現できますが、渡す変数がいくつかあり、非常に不便です。

4

1 に答える 1

1

getter メソッドを追加し、いずれかのサブクラスでオーバーライドします。

public int getVar() {
    return var1;
}
于 2014-09-07T18:59:56.663 に答える