2025年1月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
無料ブログはココログ

« TypeScriptメモ(2) 引数の省略、関数のオーバーロード | トップページ | [WPF] Windowsでマルチタッチ »

2014.08.24

TypeScriptメモ(3) クラス

よし、次はクラスだ。

メンバ変数、関数は次のように宣言する。varやfunctionはなしで変数や関数の宣言と同じように書く。アクセス修飾子は、public、privateだけでprotectedはないようだ。

class Hoge1 {
	// メンバ変数
	private aaa:number;
	
	// コンストラクタ
	constructor(a:number) {
		this.aaa = a;
	}
	
	// メンバ関数
	public hoge():number {
		return this.aaa;
	}
	
	private hogeHoge():number {
		return 44;
	}
	
	// プロパティ
	// アクセッサ(set)
	public set AAA(val:number) {
		alert("set");
		this.aaa = val;
	}
	// アクセッサ(get)
	public get AAA():number {
		alert("get");
		return this.aaa;
	}
	
}

var hoge1:Hoge1 = new Hoge1(20);
alert(hoge1.AAA);
hoge1.AAA = 33;
alert(hoge1.hoge());	// メンバ関数を呼び出す。
alert(hoge1.hogeHoge()); // プライベートなんでエラー

継承は次のような感じ。クラス名のあとにextendsでスーパークラス名を書く。
コンストラクタでスーパークラスのコンストラクタを呼ぶのはsuper()で呼び出さないといけない。superでスーパークラスの関数や変数、プロパティにアクセスできる。 関数のオーバーライドは同じ関数を宣言するだでオーバーライドできる。

class Hoge1 {
	// メンバ変数
	private aaa:number;
	
	// コンストラクタ
	constructor(a:number) {
		this.aaa = a;
	}
	
	// メンバ関数
	public hoge():string {
		return "Hoge1.hoge()";
	}
	
	// プロパティ
	// アクセッサ(set)
	public set AAA(val:number) {
		this.aaa = val;
	}
	// アクセッサ(get)
	public get AAA():number {
		return this.aaa;
	}
}

class Hoge2 extends Hoge1 {
	private bbb:number;
	
	constructor() {
		super(234);		// スーパークラスのコンストラクタ呼び出し
		this.bbb = 2;
	}
	public hoge():string {
		return "Hoge2.hoge()";
	}
	public hoge2():string {
		return super.hoge();	// superでスーパークラスの関数を呼び出す。
	}
	public getBBB():number {
		return this.bbb;
	}
}
var hoge1:Hoge1 = new Hoge2();	// 継承してるのでHoge1型の変数に代入できる
alert(hoge1.hoge());		// "Hoge2.hoge()"が表示され、オーバーライドできてるのが確認できる
alert(hoge1.AAA);			// "234"が表示される

var hoge2:Hoge2 = <Hoge2>hoge1;		// これでダウンキャストできる
alert(hoge2.hoge2());
alert(hoge2.getBBB());

インターフェイスについては次のメモ(予定)で書こうかな。

« TypeScriptメモ(2) 引数の省略、関数のオーバーロード | トップページ | [WPF] Windowsでマルチタッチ »

プログラミング」カテゴリの記事

TypeScript」カテゴリの記事

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: TypeScriptメモ(3) クラス:

« TypeScriptメモ(2) 引数の省略、関数のオーバーロード | トップページ | [WPF] Windowsでマルチタッチ »