7章21

Rmag Breaking News

答えA

// 親クラスを定義します。
class Parent {
// 親クラスのデフォルトコンストラクタです。ここで”A”を出力します。
public Parent() {
System.out.println(“A”);
}

// 親クラスのStringを引数に取るコンストラクタです。まず自身のデフォルトコンストラクタを呼び出し、
// その後引数で与えられた文字列を出力します。
public Parent(String val) {
this(); // ここでデフォルトコンストラクタを呼び出します。
System.out.println(val); // 引数で与えられた値(”B”または”D”)を出力します。
}
}

// 親クラスから継承された子クラスを定義します。
class Child extends Parent {
// 子クラスのデフォルトコンストラクタです。親クラスのStringを引数に取るコンストラクタを
// “B”で呼び出した後に”C”を出力します。
public Child() {
super(“B”); // 親クラスのString引数コンストラクタを”B”で呼び出します。
System.out.println(“C”); // “C”を出力します。
}

// 子クラスのStringを引数に取るコンストラクタです。まずデフォルトコンストラクタを呼び出し、
// その後引数で与えられた文字列を出力します。
public Child(String val) {
this(); // ここで子クラスのデフォルトコンストラクタを呼び出します。
System.out.println(val); // 引数で与えられた値(”D”)を出力します。
}
}

// メインクラスです。ここからプログラムが開始します。
public class Main {
public static void main(String[] args) {
new Child(“D”); // 子クラスのStringを引数に取るコンストラクタを”D”で呼び出します。
}
}

実行フロー:

Mainクラスのmainメソッドが実行され、new Child(“D”);でChildクラスのインスタンスが生成されます。ここで文字列”D”を引数に取るChildのコンストラクタが呼ばれます。

Childのコンストラクタはまずthis();を使って、同じクラスのデフォルトコンストラクタChild()を呼び出します。

Child()コンストラクタは、super(“B”);を使ってParentクラスの文字列”B”を引数に取るコンストラクタを呼び出します。

Parent(String val)コンストラクタは最初にthis();で自クラスのデフォルトコンストラクタを呼び出し、”A”を出力します。
その後、”B”が出力されます。

Child()コンストラクタに戻り、”C”が出力されます。
最後にChild(String val)コンストラクタに制御が戻り、引数”D”が出力されます。

出力結果:

A
B
C
D

Leave a Reply

Your email address will not be published. Required fields are marked *