抽象抽象クラス

抽象クラス

その中の抽象クラスと抽象メソッドを定義するための抽象。

抽象クラスとは何ですか?

まず、抽象クラスをインスタンス化することを許可されています。

抽象 クラス動物{
   公共の名前。
  パブリックコンストラクタ(名前){
     この .nameの= 名前。
  } 
  パブリック 抽象sayHi()。
} 
 
ましょう = 新しい動物(ジャック); 
 
// index.ts(9,11):エラーTS2511:抽象クラス「アニマル」のインスタンスを作成することはできません。

 

上記の例では、抽象クラス動物を定義し、抽象メソッドsayHiを定義します。時間の例では、抽象クラスを与えられました。

第二に、抽象メソッド抽象クラスは、サブクラスを実装する必要があります。

抽象 クラス動物{
   公共の名前。
  パブリックコンストラクタ(名前){
     この .nameの= 名前。
  } 
  パブリック 抽象sayHi()。
} 
 
クラス猫動物{延び
   公共食べる(){ 
    にconsole.log( `$ { この .nameのは} であるeating.`)を、
  } 
} 
 
猫ましょう = 新しい猫(' トム' ); 
 
// index.ts(9,7):エラーTS2515:非抽象クラスの猫は"クラス「動物」から継承された抽象メンバー「sayHi」を実装していません。

 

上記の例では、定義したクラスキャットは、抽象クラスの動物を継承しますが、抽象メソッドsayHiを実装していないので、コンパイラが指定されています。

以下は、抽象クラスの適切な使用の例です。

抽象 クラス動物{
   公共の名前。
  パブリックコンストラクタ(名前){
     この .nameの= 名前。
  } 
  パブリック 抽象sayHi()。
} 
 
クラスキャットは、動物{拡張
   公共sayHi(){ 
    はconsole.log( `ニャーは、私の名前はある $ { この` .nameのを}); 
  } 
} 
 
猫ましょう = 新しい猫(' トム');

 

上記の例では、コンパイラによって、sayHi抽象メソッドを実装しました。

メソッドが抽象的であったとしても、活字体の結果をコンパイルする、ということに注意することは、やはり上記のコードの結果をまとめ、このクラスであり、そこに次のようになります。

VaRの __extends =(この && この .__が延びる)|| 関数(D、B){
     VARの P における B)であれば(b.hasOwnProperty(P))D [P] = B [P]。
    関数__(){ この .constructor = D。} 
    d.prototype = B === ヌルObject.create(B):(。__試作品= b.prototype、新しい__()); 
}。
VAR動物= (関数(){ 
    関数動物(名前){ 
        この .nameの= 名; 
    } 
    戻り動物を; 
})();
VaRの猫= (関数(_super){ 
    __extends(猫、_super); 
    機能キャット(){ 
        _super.apply(この、引数); 
    } 
    Cat.prototype.sayHi = 関数(){ 
        にconsole.log(' ニャー、私の名前ある' + この; .nameのは)
    }; 
    戻り猫; 
}(動物))。
VaRの猫= 新しい猫(' トム');

 

おすすめ

転載: www.cnblogs.com/flxy-1028/p/10959722.html