【Java】クラスの初期化について

f:id:hira98:20190515152439p:plain

【結論】

  • Javaにおけるクラスの初期化はコンストラクタかstaticイニシャライザに記載する。
  • クラスからインスタンスを生成するたびに行う初期化処理はコンストラクタに記載する。
  • 一度だけ行うクラス共通の初期化処理はstaticイニシャライザに記載する。
  • これら3つを理解しており、以下のソースを読み解ける方はこの記事を読む必要はない。

【目次】

コンストラクタについて

クラスからインスタンスを生成する度に行いたい、共通の処理に使用します。

書式は、クラス名と同じメソッド名をpublic付きで定義します。

class クラス名 {
  public クラス名() {
    //コンストラクタ
  }
}

次のようにコンストラクタに引数を指定することも可能です。

class Hoge {
  public Hoge() {
    System.out.println("Hello World ");
  }
  public Hoge(String s) {
    System.out.println("Hello World " + s);
  }
}

コンストラクタに渡す引数はnewでクラスからインスタンスを生成する際に渡します。

Hoge h1 = new Hoge();
// "Hello World"が出力される。

Hoge h2 = new Hoge("Java");
// "Hello World Java"が出力される。

因みに、Javaでは同じメソッド名でも引数の定義(数、種類、並び順)が異なれば正しく動作します。

これをオーバーロードと言います。

staticイニシャライザについて

クラス共通の初期化処理は記述する方法です。

クラスがロードされた段階で1度だけ呼ばれるため、クラスをインスタンス化する前や、main()メソッドを呼び出す前に実行したい処理に使用します。

class クラス名 {
  static {
    //staticイニシャライザ
  }
}

参考情報

https://www.seshop.com/product/detail/18868

→最近の僕のJavaに関する情報源は紫本だけです。

https://ryoutaku-jo.hatenablog.com/

→ブログの書き方について参考になりました。