【Java入門】コンストラクタの使い方総まとめ(クラス/インスタンス)

Javaではクラスのインスタンス生成時に呼び出される、コンストラクタという機能があります。

コンストラクタは、インスタンス生成時に自動で呼び出される性質からクラスのメンバを初期化するときによく使われます。

今回はそんなコンストラクタについて、以下の内容で解説していきます。

  • 【基礎】コンストラクタとは
  • 【基礎】コンストラクタの使い方
  • 【発展】コンストラクタで引数を指定する方法
  • 【発展】マルチスレッドでのコンストラクタの使用方法
  • 【発展】コンストラクタ参照の方法
  • 【発展】メソッドを呼び出し例外が発生する場合

などの応用的な使い方に関しても解説していきます。

今回はそんなコンストラクタの使い方について、わかりやすく解説します!

コンストラクタとは

コンストラクタとは、クラスのインスタンス生成時に実行されるメソッドで、主にそのクラスのメンバ変数を初期化するときに使用します。

コンストラクタはインスタンス生成時に呼び出される特別なメソッドで、通常のメソッド同様に引数を指定することも可能です。

コンストラクタの呼び出しは、以下のように記述します。

コンストラクタはnew演算子を使用して、インスタンス生成時に同名のクラス名を持つメソッドが一度だけ実行されます。

コンストラクタの使い方

コンストラクタを呼び出す方法

ここでは、実際にコンストラクタの基本的な使い方を見ていきましょう。

以下にインスタンスを生成して、コンストラクタを呼び出す方法を記述します。

実行結果:

サンプルではMain.javaからConstructorSample.javaのクラスのインスタンスを生成しています。

その際にコンストラクタConstructorSampleが呼び出されています。

引数を指定する方法(オーバーロード)

前述したようにコンストラクタはメソッドと同様に引数を指定することもできます。

引数を持つコンストラクタを呼び出す場合は、new演算子でのコンストラクタ生成時にクラスに引数を指定する必要があります。

以下に引数を指定したコンストラクタを呼び出す方法を記述します。

実行結果:

サンプルではConstructorSampleクラスに、引数を持たないコンスタラクタと引数を持つコンストラクタを定義しています。

2つのコンストラクタは同名ですが引数の数が違いますので、コンストラクタをオーバーロードしていることになります。

このように同名のコンストラクタが存在する場合、インスタンス生成時にクラスに引数を指定すると、引数を持つコンストラクタが呼び出されます。

引数で渡した値をthisで受け取る方法

コンストラクタの引数で渡した値を「this」句を使って受け取る場合があります。

「this」は「このクラスの」といった意味で、コンストラクタの引数の変数名かそれともこのクラスのメンバ変数名か区別する場合に使用します。

以下に引数で渡した値をthisで受け取るの方法を記述します。

実行結果:

thisの詳しい使い方はこちらの記事で解説しているので、ぜひ確認してください。

【Java入門】thisとは? 意味や使い方のキホンを解説します!
更新日 : 2019年5月2日

継承したクラスでsuperを使う方法

クラスのメンバを継承するときは、extendsの後にクラス名を指定してクラスを継承します。

しかし、クラスを継承しても子クラス側で親クラスのコンストラクタを、そのまま親クラスのクラス名で呼び出すことはできません。

そのため、小クラスから親クラスのコンストラクタを呼び出すためには「super」を指定する必要があります。そんな継承したクラスのコンストラクタの使用法については、以下の記事で詳しく解説しています!

【Java入門】継承とコンストラクタの呼び出し(super/this)
更新日 : 2018年11月20日
【Java入門】オーバーライド(Override)の使い方
更新日 : 2019年6月7日

マルチスレッドでのコンストラクタ

プログラムでは処理を同時進行で処理することを「マルチスレッド」と呼びます。

マルチスレッドはWebサービスやアプリケーションなど、ユーザーからの入力やデータベースへの書き込み・読み込み処理など、さまざまな処理を同時並行して行うときによく使用します。

そんなマルチスレッドの処理では、コンストラクタも重要な役割を果たします。

Javaでのマルチスレッドについては、以下の処理で詳しく解説しています。

【納得Java】ThreadLocalでスレッド毎に値を保持する方法
更新日 : 2019年5月14日

コンストラクタ参照

既に定義済みのメソッドを引数なしで呼び出すことをメソッド参照といいます。

メソッド参照はJava8から新しく導入された機能で「クラス名::メソッド名」の形式で使用します。

そんなメソッド参照ですが、コンストラクタを参照するときにも使用することができます。コンストラクタを参照するときは「クラス名::new」の形式で使用します。

コンストラクタを参照する具体的な方法については、以下の記事で詳しく解説しています。

【楽チンJava】メソッド参照での呼び出し方
更新日 : 2017年7月27日

メソッドを呼び出し例外が発生する場合

これまでのサンプルコードでも、コンストラクタからメソッドを呼び出していますが、このメソッドが例外を発生する場合はどのように対応すればいいのでしょうか?

実行結果:

このサンプルコードでは、コンストラクタの引数のString型変数がnullの場合にNullPointerExceptionの例外が発生します。

ですので、コンストラクタで発生する例外をthrowsで投げて、インスタンスの生成する際にtry-catch文で例外処理を行っています。

例外を投げるようにしておくと、オブジェクトが生成されることがないため、メモリリークや意図しないアクセスなどの不具合が発生することがなくなります。

まとめ

ここでは、Javaのコンストラクタのさまざまな使い方について紹介しました。

コンストラクタはクラスのメンバを初期化したり、初期値を設定するときによく使用しますので、ぜひ覚えておいてくださいね。もし、コンストラクタの使い方を忘れてしまったら、この記事を思い出してください!

LINEで送る
Pocket

最短でエンジニアを目指すなら侍エンジニア塾

cta_under_bnr

侍エンジニア塾は業界で初めてマンツーマンレッスンを始めたプログラミングスクールです。これまでの指導実績は16,000名を超え、未経験から数多くのエンジニアを輩出しています。

あなたの目的に合わせてカリキュラムを作成し、現役エンジニア講師が専属であなたの学習をサポートするため効率よく学習を進めることができますよ。

無理な勧誘などは一切ありません。まずは無料体験レッスンを受講ください。

無料体験レッスンの詳細はこちら

書いた人

侍テック編集部

侍テック編集部

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説