1、クラス定義
// TSは、クラスを定義し、同様のES6は、修飾子の属性は、データ型と定義する必要がありますことを除いて 、クラス人{ パブリック名:文字列; コンストラクタ(N-:文字列){ この .nameの= N-; } RUN():無効{ コンソール。ログ(この.nameの); } } VARの P = 新しい新しい人(' ジョン・ドウ' ); p.run()
2、クラス修飾子の内部
公共:公共の現在のクラス、サブクラス、クラスの外にアクセスすることができ、保護:保護タイプ、中に現在のクラス、外部からアクセス可能なサブクラスのクラスはアクセスできませんプライベート:プライベート、現在のクラスにアクセスすることができ、サブクラスで、クラスでも、外部にアクセスしていなかった ではないデフォルト修飾子が公開されている場合(パブリックプロパティを)
3、クラスの継承
// 継承およびES6は、同様のクラスするTS延び、スーパー クラス{人物 名:文字列; コンストラクタ(名:文字列){ この .nameの= 名; } RUN():文字列{ リターン `$ { この.nameの動き} ` } } のvar P = 新しい新しい人( 'ジョン・ドウ' ); 警告(p.run()) クラスのWeb人{拡張 コンストラクタ(名:文字列){ スーパー(名前を); / * 親クラスのコンストラクタを初期化します* / } } VARの W = 新しい新しいウェブ( 'ジョン・ドウ' ); 警告(w.run());
図4に示すように、多状態(または継承)
// 多型:親クラスがそのサブクラスは、異なる性能を達成するために、各サブクラスを継承するように、実装されていない方法で定義する クラス動物{ 名:文字列; コンストラクタ(名:文字列){ この .nameの= 名; } // 各サブクラスは、同じ性能ではありません、そのサブクラスを達成するために食べるの継承は何の特定の? EAT(){ はconsole.log(「食べる方法」) } } クラス犬拡張アニマル{ コンストラクタ(名:文字列) { スーパー(名) } (EAT){ 戻り 、この .nameの+ 'ドッグフードを食べる' } } {延び動物クラス猫 :{コンストラクタ(文字列名) 、スーパー(名) } (EAT){ リターン この .nameの+ '魚' } }
5、静的プロパティとメソッド
// 方法を前述のプロパティを追加し、静的、静的プロパティおよびメソッドその 人{クラス パブリック名:文字列; 静的年齢 = 20である// 静的プロパティ コンストラクタ(名:文字列){ この .nameの= 名; } // メソッドの例 ラン( ){ はconsole.log($ { ` この運動で.nameの} ') } // 静的メソッド 静的作業(){ はconsole.log('私は年齢of` $ {} person.age)午前 } } // コールインスタンス化メソッドの VAR P = 新しい新しい人( 'ジョン・ドウ'は) p.run(); //は静的メソッドを呼び出すと属性 Person.workを(); person.Age。
6、抽象メソッド
// 抽象クラスのキーワードアブストラクト、および抽象メソッド添加前クラス及びメソッド // 抽象クラスの抽象メソッドを内側に配置することができる 抽象クラス動物{ パブリック名:文字列; コンストラクタ(名:文字列){ この .nameの= 名前。 } // 抽象メソッドは、特定の実装を含まず、派生クラスで実装されなければならない )(EAT抽象:ボイド; } クラス延び動物犬{ コンストラクタ(名:文字列){ スーパー(名) } // 抽象クラス必須のサブクラス抽象クラス内の抽象メソッド 食べる(){ にconsole.log(この .nameの+ 'は食べ物を食べる' ) } } VARの D = 新しい新しい犬( '犬' ); d.eat()。