1. ホーム
  2. java

なぜコンストラクタでsuper()を呼び出すのか?

2023-08-25 19:08:42

質問

を拡張するクラスを扱っています。 JFrame .

私のコードではないので、これは super を呼び出してから、GUI の構築を開始しています。を呼び出すことなく、常にスーパークラスのメソッドにアクセスするだけだったので、なぜこのようなことが行われるのか不思議に思っています。 super();

どのように解決するのですか?

暗黙のうちに super() を引数なしで暗黙的に呼び出すことができます。これは、Javaのすべてのユーザー定義クラスです。 しかし、あなたは への呼び出しを使用します。 super() を引数付きで呼び出すことができます。これは、親のコンストラクタがパラメータを取り、それを指定したい場合です。さらに、親のコンストラクタがパラメータを取り、デフォルトのパラメータなしコンストラクタがない場合、次のようにします。 が必要です。 を呼び出す必要があります。 super() を引数で呼び出す必要があります。

の明示的な呼び出しがある場合の例です。 super() を明示的に呼び出すことで、フレームのタイトルをある程度余分に制御できるようになります。

class MyFrame extends JFrame
{
    public MyFrame() {
        super("My Window Title");
        ...
    }
}