DEV Community

TANIAOKA, Akihiro
TANIAOKA, Akihiro

Posted on

7章20

この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"が出力される。
  }
}
Enter fullscreen mode Exit fullscreen mode

上記のコードを実行すると、次のような出力が得られます。

A
B
Enter fullscreen mode Exit fullscreen mode

これは、B のインスタンスが作成されるときに、Javaの継承規則に従ってまずスーパークラス(A)のコンストラクタが呼び出されるためです。その後でサブクラス(B)のコンストラクタが実行されます。

問題の選択肢から、正しい答えを選ぶと、以下のようになります。

  • A.「A」を表示される
  • B.「B」を表示される
  • C.「A」「B」を表示される
  • D.「B」「A」を表示される
  • E. コンパイルエラーが発生する
  • F. 実行時に例外がスローされる

このコードを実行した結果、最初に「A」が表示され、その後に「B」が表示されるので、正しい答えは C.「A」「B」を表示される です。

Top comments (0)