第12回 クラスの利用TypeScriptで学ぶJavaScript入門(4/6 ページ)

» 2015年07月16日 05時00分 公開
[羽山博]

コンストラクター

 コンストラクターとは、インスタンスの作成時に自動的に実行されるメソッドで、初期値の設定などに使われる。ここでは、猫の名前を表すnameプロパティを追加し、初期値として"名なし"を設定してみよう。コンストラクターを定義するには、constructorという名前の関数を書けばよい。

class Cat {
  length: number;
  weight: number;
  name: string;
  constructor() {  // (1)
    this.name = "名なし";
  }
}

var myCat = new Cat();  // (2)
alert("名前は" + myCat.name + "です");  // (3)
window.close();


 (1)がコンストラクターの定義となる。関数名がconstructorとなっているだけで、特に複雑な書き方が要求されるわけではない。(2)でCatクラスのインスタンスを作成すると、自動的にコンストラクターが実行されるので、名前(nameプロパティ)に値を設定しなくても、(3)でそのまま名前を表示できる。実行例は次の項で併せて見ることにしよう。

コンストラクターのオーバーロード

 コンストラクターをオーバーロードすれば、インスタンス作成時の引数の指定により、動作を変えることができる。例えば、インスタンスの作成時に名前を指定した場合には、その名前が設定されるようにしてみよう。

class Cat {
  length: number;
  weight: number;
  name: string;
  constructor();
  constructor(s: string);
  constructor(s?: string) {
    if (typeof (s) == "string") {
      this.name = s;
    } else {
      this.name = "名なし";
    }
  }
}

var myCat = new Cat("タマ");  // (1)
var yourCat = new Cat();  // (2)
alert("私の猫の名前は" + myCat.name + "で、あなたの猫の名前は" + yourCat.name + "です");
window.close();


 オーバーロードの方法はこれまでに見た通りである。(1)では"タマ"という名前を引数に指定してCatクラスのインスタンスを作成しているので、nameプロパティに"タマ"が代入される。一方、(2)では引数を指定せずにCatクラスのインスタンスを作成しているので、nameプロパティに"名なし"が代入される。

 プログラムの実行結果は以下のようになる。

図7 コンストラクターをオーバーロードしたプログラムの実行例 図7 コンストラクターをオーバーロードしたプログラムの実行例
インスタンスの作成時に引数を指定するとそれが名前になり、引数を省略すると「名なし」という名前になる。

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。