2018年4月
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          
ブログ:ココログ
時間のないサイト運営者リング
時間のないサイト運営者リング

« 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でマルチタッチ »

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/43319/60202456

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

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


Google

サーチする:
Amazon.co.jp のロゴ









携帯URL