未分類

コンストラクタのしくみ

投稿日:

                

クラスの中には、フィールドとメソッドのほかに、コンストラクタと呼ばれるものを記述することができます。

コンストラクタは、メソッドに大変よく似ています。しかし、コンストラクタの名前は、必ずクラス名と同じである必要があります。またメソッドと違って、戻り値を指定することはできません。

コンストラクタの役割を知る

コンストラクタは、

そのクラスのオブジェクトが作成されたとき、定義しておいたコンストラクタ内の処理が自動的に行われる

ということになります。

メソッドの場合と違って、コンストラクタを自由に呼び出すことは出来ません。

オブジェクトのメンバに自動的に初期化を設定する

などの処理を書いておくのが基本です。例えば、キャラクタークラスのコンストラクタであれば、

属性を無、体力量に0の初期値を代入する

といった処理をまとめておくのです。では、実際にコンストラクタの働きを見てみましょう。

main()メソッドの中でオブジェクトを作成すると、自動的にコンストラクタが呼び出されます。そのため、コンストラクタ内の「キャラクターが誕生しました。」という出力が行われるのです。

コンストラクタをオーバーロードする

引数の数・型が異なっていれば、同じ名前のメソッドを複数定義できる「オーバーロード」を思い出してください。

コンストラクタも、同じように

複数のコンストラクタを定義する

ことができるのです。

例えば、キャラクタークラスのコンストラクタとして、2つのコンストラクタを定義(オーバーロード)してみましょう。

上記のコードでは、2つのオブジェクトを作成しています。

  • 1つ目のオブジェクト→引数なしのコンストラクタ
  • 2つ目のオブジェクト→引数2個のコンストラクタ

一人目の属性は’無’で体力量は0のキャラクター、二人目の属性は’火’で体力量は25のキャラクターを誕生させることができました。

別のコンストラクタを呼び出す

上記のコードは、Sample9_04_5に「this();」(14行目)を追加したものです。このようにすると、

あるコンストラクタ内で、別のコンストラクタを特別に呼び出す

という処理ができます。つまり、上記のコードでは、

引数なしのコンストラクタの処理につけ加えるように、引数2個のコンストラクタを定義できる

というわけです。this()を使って手間を省くことができます。

もし、引数2個のコンストラクタを別のコンストラクタ内で呼び出したい場合は、this(’火’, 25);と記述します。

ただし、this()は、必ずコンストラクタ内の先頭に記述しておかないといけません。

コンストラクタを省略すると?

ところで、これまで扱ったクラスでは、コンストラクタを定義していませんでした。このような場合はオブジェクトを作成したときに自動的に引数のないコンストラクタ(デフォルトコンストラクタ)が呼び出されます。

コンストラクタに修飾子をつける

コンストラクタには、メソッドと同じように、publicまたはprivateという修飾子をつけることができます。これまでのコンストラクタにはpublicをつけていますが、これをprivateにすると、クラスの外でそのコンストラクタが呼び出されるようなオブジェクトの作成ができなくなります。

このコードは、引数なしのコンストラクタにprivateをつけました。このため、「new Character()」という方法ではオブジェクトを作成出来ません。

Character chara2 = new Character(‘火’, 25);

このchara2クラスでは、引数なしのコンストラクタは、引数2個のコンストラクタの処理の一部として呼び出されるためだけに存在していることになります。

必ずキャラクターの属性と体力量を両方指定し「キャラクター」オブジェクトを誕生させたい場合に、便利です。

次の章では、フィールドとメソッドについてさらに詳しく学んでいきましょう。

-未分類

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

サンプルイメージ

練習問題(配列)解答例

配列を利用すると、同じ種類の多くのデータを扱うことができます。たくさんのデータをまとめ、簡単に管理することができます。今はすべてを理解しようとせずに前に進みましょう。 大切なのは、プログラミングを勉強 …

サンプルイメージ

コンパイルのしくみを知る

コンピューターの画面に「HelloWorld!!」という文字を表示するプログラムを作成していきましょう。 前回ダウンロードしてもらったサクラエディタに上記のソースコードを入力してください。ファイルに名 …

サンプルイメージ

練習問題(配列)

練習7-1   BirthStone.java 誕生月を入力すると、その月の誕生石を表示するプログラムを、下の空欄を埋めて作成してください。 練習7-2   DispArray1.java 以下のプロ …

サンプルイメージ

配列の応用

配列の要素数を調べるコードを記述します。配列の要素数(ハコの数)は、配列の長さ(大きさ)と呼ばれています。 Javaでは、配列要素に.(ピリオド)をはさんでlengthと記述すると、配列の要素数をあら …

サンプルイメージ

配列のしくみ①

プログラムの中ではたくさんのデータを扱う場合があります。例えば、50体のキャラクターの攻撃力や体力や属性を扱うプログラムを考えてみましょう。 たくさんの変数が登場するので、コードが複雑で読みにくくなり …