バナー画像

Java言語で実装を進めていく上で、理解しておくべき機能の1つに「コンストラクタ」の存在が挙げられます。

コンストラクタは、クラスからインスタンスを生成する際に自動で呼び出される性質をもち、特に処理が記述されていないことも多いため、曖昧な理解となりがちです。

本記事では、Java言語におけるコンストラクタの使い方を、初心者の方でも理解していただけるよう概要から基礎的な部分を中心に、サンプルコードをまじえながらご紹介していきたいと思います。

Javaコンストラクタを理解しよう

Javaに限らずですが、オブジェクト指向のプログラミング言語には「コンストラクタ」という機能が存在します。

まずコンストラクタの概念についてご紹介していきます。

コンストラクタとは?

コンストラクタとは、オブジェクト指向のプログラミングで利用される「クラス」の処理を実行するために「インスタンス」を生成する際に実行される機能を指します。

実際にJavaでクラスからインスタンスを生成する場合には「new」演算子を利用しますが、この「new」を実行した際に「コンストラクタ」の機能が呼び出される形となります。

コンストラクタは何のために使うの?

コンストラクタでは一般的にインスタンスを作成する際に「初期値」を設定するような処理を記述します。

クラスで利用される値を保存する「メンバ変数」を初期化するための処理が頻繁に記述されます。

ポテパンダの一言メモ

コンストラクタで「メンバ変数」を初期化することにより、新たに作成したインスタンスのメンバ変数が必ず指定した値になっていることが保証されます。

Javaコンストラクタの基本的な使い方を抑えよう

ここからは、Javaにおけるコンストラクタの基本的な使い方をサンプルコードを交えながらご紹介していきたいと思います。

コンストラクタの基本構文

コンストラクタはクラス名と同じ名前のメソッドで定義しておく必要があります。

記述方法としては下記のサンプルコードのようになります。

public class ClassA {

  // コンストラクタ
  public ClassA() {
    // 処理を記述
  }
}

今回のサンプルでは「ClassA」というクラスファイルを定義しており、クラス名と同名のメソッドとなる「ClassA」がコンストラクタです。

ここで記述した処理がインスタンス生成時に実行されることとなります。

ポテパンダの一言メモ

注意すべき点としては、コンストラクタは値を返却することが出来ないため「return」の処理を記述するとエラーとなってしまいます。

コンストラクタの呼び出し方は?

コンストラクタはインスタンス生成時に呼び出されるとご紹介しましたが、実際にコードではどのように記述されるのか確認していきましょう。

// ClassAのインスタンスを生成する
ClassA sampleInstance = new ClassA();

上記のようにClassAをインスタンス化するタイミングでコンストラクタが呼び出されます。

Javaコンストラクタの応用的な使い方を確認しよう

ここからは更に一歩踏み込んでJavaコンストラクタの応用的な使い方をご紹介したいと思います。

コンストラクタを使いこなすことで、より綺麗なコードを記述出来ますのでしっかりと学習していきましょう。

コンストラクタには引数を渡すことが出来る!

コンストラクタには引数として値を渡すことが可能となっています。

初期値としてメンバ変数に設定する値を変更したい場合など、様々な場面で利用出来る便利な機能です。

記述方法としては下記のサンプルコードのようになります。

public class ClassA {

 // メンバ変数
 String sample1;

 // 引数なし
 public ClassA() {
 // 処理を記述 
 } 

 // 引数あり
 public ClassA(String str) {
   // メンバ変数に引数の値を設定
   sample1 = str;
 }
}

サンプルコードでは引数ありのコンストラクタで、引数に指定された値をメンバ変数に設定する処理を記述しています。

呼び出し元のコードは下記のようになります。

// ClassAのインスタンスを生成する
ClassA sampleInstance = new ClassA("りんご");

サンプルコードを実行すると「りんご」がメンバ変数のsample1に設定された状態でインスタンスが作成される結果となります。

同名のコンストラクタを複数定義することも可能?!

ここで気付いた方もいらっしゃるかも知れませんが、上記のサンプルで「ClassA」という同じ名前のコンストラクタが2つ記述されていますね。

実は、Javaでは同名のコンストラクタを複数定義することが可能です。

引数により同名のメソッドを複数作成することを「オーバーロード」と呼び、コンストラクタでも利用することが可能です。

ポテパンダの一言メモ

オーバーロードを利用する際には、「引数の型」または「引数の数」が異なることが条件となります。

記述方法としては下記のサンプルコードのようになります。

public class ClassA {

 // 引数なし
 public ClassA() {
 // 処理を記述 
 } 

 // String型の引数あり
 public ClassA(String str) {
 // 処理を記述  
 }

 // Integer型の引数あり
 public ClassA(Integer int) {
 // 処理を記述
 }

 // String型の引数が2つ
 publec ClassA(String str1, String str2) {
 // 処理を記述
 }

 // String型とInteger型の引数が1つずつ
 public ClassA(String str, Integer int) {
 // 処理を記述
 }
}

呼び出し元のコードは下記のようになります。

ここでは、String型の引数とInteger型の引数が1つずつ定義されたコンストラクタを呼び出してみます。

// String型とInteger型の引数が定義されたコンストラクタが呼び出される
ClassA sampleInstance = new ClassA("りんご", 1);

1つ目の引数にString型である「りんご」2つ目の引数にInteger型の「1」を定義しています。

引数の順番を反対にした下記のような記述をした場合には、サンプルコードでは定義されたコンストラクタが存在しないためエラーとなりますので注意してください。

// 定義されたコンストラクタが存在しないためエラー
ClassA sampleInstance = new ClassA(1, "りんご");

まとめ

本記事では、コンストラクタの概念からJavaにおけるコンストラクタの基本的な実装方法までをご紹介してきました。

近年の開発では、eclipseを筆頭としたIDEの台頭により、コンストラクタが自動で生成されることも多いため、しっかりとコンストラクタの概念を理解していないプログラマーの方も少なからずいらっしゃいます。

これまでいまいちコンストラクタについて理解していなかった方も、本記事でご紹介した情報をしっかりと理解して、便利で効果的なコンストラクタを使いこなせるようにぜひ挑戦してみてください。

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。