-4

面接で以下の質問をされたので、答えを知りたいです。

Generator によって拡張される基本クラス 'GeneratorBaseClass' があります。私が尋ねられた質問は、新しい基本クラス 'GeneratorBaseClass2' を作成し、ジェネレーターを変更して実行時にそれを拡張することについてでした (ジェネレーターを変更する必要はありません)。ということで、コード例として

public class GeneratorBase1 {
    public GeneratorBase1(){
        System.out.println("Generator Base 1 is used");
    }
}

public class Generator  extends  GeneratorBase1{

    public Generator() {
        //will call the appropriate super class
    }
    public static void main(String[] args){
        Generator test=new Generator();


    }


}

そして、実行時に Generator に新しい GeneratorBase を取得させたいので、次のように変更します。

public class GeneratorBase2 {
    public GeneratorBase2(){
        System.out.println("Generator Base 2 is used");
    }
}

Generator の形式は変更できますが、基本クラスが変更されるたびに変更してはなりません。これは、実行時に基本クラスを選択できるようにするためのものであり、「extends ....」の部分だけを変更したくありません。

4

1 に答える 1

5

私はここで最善を尽くしています。質問はあいまいですが。なぜ誰かが基本クラスを何度も変更したいのでしょうか? これは、基本クラスが提供する機能が実行時に変更されるためである可能性があります。この場合、2 つのケースが考えられます。

  1. 基本クラスはインターフェースであり、それ以上のものではありません。

  2. 変化する機能を基本クラスに合成し、ストラテジー デザイン パターンが機能する方法と同様に、実行時に実装を変更できるようにする必要があります。

于 2013-05-02T06:47:50.967 に答える