前回の記事ではオブジェクト指向とクラスについて学びました。 今回はクラスからインスタンスを生成する際に自動的に実行されるコンストラクタについて学んでいきます。 読んで字のごとく、コンストラクタは建設者という意味です。クラスという設計図を元に、コンストラクタによって実際にものを生成してくれる役割を持ちます。

コンストラクタとは

3年以上前に更新されました。情報が古い可能性があります。
更新日 : 2019年03月26日

前回の記事ではオブジェクト指向とクラスについて学びました。
今回はクラスからインスタンスを生成する際に自動的に実行されるコンストラクタについて学んでいきます。

読んで字のごとく、コンストラクタは建設者という意味です。クラスという設計図を元に、コンストラクタによって実際にものを生成してくれる役割を持ちます。

コンストラクタとは

オブジェクト指向では、クラスが設計図の役割をし、設計図だけでは実際には動かないのでインスタンス生成という実際のオブジェクトを生成しないと使用できないことまでご説明しました。

コンストラクタを簡単に説明すると、インスタンス生成時に最初に行う処理のことを言います。前回のゲームでよくあるモンスターを例としてご説明していきます。

インスタンス生成時に決めたいデータ

前回の記事ではモンスターの基本機能を以下のように決めました。

  • モンスターの名前(データ)
  • ヒットポイント(データ)
  • 攻撃力(データ)
  • 防御力(データ)
  • 攻撃する(動作)
  • 攻撃をうける、または防御する(動作)

クラスを作成する際には、データがクラス内変数(メンバー変数)、動作がクラス内関数(メソッド)となります。

クラスはあくまでも設計図であるため、実際にモンスターを作り出す部分(インスタンス生成)ではいろんな種類のモンスターを作りたいです。
攻撃力が高く、防御力が低いモンスターやヒットポイントだけが高いモンスターなど、これだけ簡単な設計図でもたくさんの種類のモンスターが考えられます。

そのため、設計図の段階(クラス)ではヒットポイントや攻撃力といったデータは決めたくありません。そのようなときに利用されるのがコンストラクタです。

コンストラクタの機能

コンストラクタでは、インスタンス生成時だけ処理を行いたいときに利用されます。

クラスではモンスターの名前やヒットポイントも決まっていません。あくまで設計図なので。そこで、インスタンス生成時に名前やヒットポイントなどのデータを決めて、それをもとに実体を作成することをコンストラクタで実現します。

コンストラクタは実際は関数のように作成します。メソッドと同様に関数として引数や行いたい処理を記述しますが、インスタンス生成時のみ行われる処理なので、特別なルールがあります。各プログラミング言語によってコンストラクタの作り方が異なるので、詳しくは各プログラミング言語のクラスの説明をお読みください。

まとめ

コンストラクタについて説明していきました。

コンストラクタとは、インスタンス生成時に行いたい処理を関数のように記述し、インスタンスが生成される瞬間に1回実行される処理のことです。