このJavaのコード例では、継承の基本的な概念を示しています。以下に、各部分の説明を加えた後、問題の答えを示します。
まず、クラスAとクラスBがあります。
// クラスAを定義
class A {
// クラスAのコンストラクタ
public A() {
// コンストラクタが呼び出された時に"A"を出力
System.out.println("A");
}
}
// クラスBを定義し、クラスAを継承
class B extends A {
// クラスBのコンストラクタ
public B() {
// Javaでは、サブクラスのコンストラクタが呼び出された時に、
// 明示的に指定がない限り、スーパークラスのコンストラクタが自動的に呼び出される。
// そのため、クラスAのコンストラクタが先に実行される。
// コンストラクタが呼び出された時に"B"を出力
System.out.println("B");
}
}
// メインクラスとしてのMainクラスを定義
public class Main {
// mainメソッドはJavaプログラムのエントリポイント
public static void main(String[] args) {
// クラスBのインスタンスを作成
A a = new B(); // Bのインスタンスを作成すると、まずAのコンストラクタが呼ばれて"A"が出力され、
// 次にBのコンストラクタが呼ばれて"B"が出力される。
}
}
上記のコードを実行すると、次のような出力が得られます。
A
B
これは、B のインスタンスが作成されるときに、Javaの継承規則に従ってまずスーパークラス(A)のコンストラクタが呼び出されるためです。その後でサブクラス(B)のコンストラクタが実行されます。
問題の選択肢から、正しい答えを選ぶと、以下のようになります。
- A.「A」を表示される
- B.「B」を表示される
- C.「A」「B」を表示される
- D.「B」「A」を表示される
- E. コンパイルエラーが発生する
- F. 実行時に例外がスローされる
このコードを実行した結果、最初に「A」が表示され、その後に「B」が表示されるので、正しい答えは C.「A」「B」を表示される です。
Top comments (0)