面接で以下の質問をされたので、答えを知りたいです。
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 ....」の部分だけを変更したくありません。