-1
私はゲームに取り組んでいます。この問題は、変数がクラスのインスタンスに設定されていて、そのクラスコンストラクタが変数を設定している場合、 ?例:コンストラクタがそのインスタンスをオーバーライドすることができます
public class MainClass {
public static MainInterface mainInterface;
public static void main(String[] args) {
mainInterface = new SubClass1();
}
}
public interface MainInterface {
public void method();
}
public class SubClass1 implements MainInterface {
public SubClass1() {
MainClass.mainInterface = new SubClass2();
}
public void method() { }
}
public class SubClass2 implements MainInterface {
public void method() { }
}
したがって、この例では、mainInterfaceはSubClass1またはSubClass2のインスタンスになりますか?
ベストアンサー:これをテストするとどうなりますか?また、おそらく、静的なファクトリメソッドを使用して、コンストラクタを非公開にする必要があります。 –
これをデバッガで実行すると、デバッガでどのように動作するのか確認できます – ControlAltDel
コンストラクタの終了時に 'SubClass2'が上書きされるため、' SubClass1'になります。 – 4castle