TypeScriptでは、ExtensionsとImplementsの抽象クラスの違いは何ですか

TypeScriptでは、クラスを実装または拡張できることがわかっています。上記の2つのオブジェクト指向言語では実装できるのはクラスだけで、クラスだけなので、一部のC#またはJavaベースの学生はこれについて混乱する可能性があります。拡張するために。TypeScriptでこれら2つのキーワードがどのように異なるかを説明しましょう。最近StackOverflowでこの問題を見つけたので、翻訳して記録しました。元のアドレスは次のとおりです:https://stackoverflow.com/questions/35990538/extending-vs-implementing-a-pure-abstract-class- in-typescript / 35990799#35990799

問題の説明

TypeScriptでの純粋な抽象クラスの拡張と実装

クリーンな抽象クラスAがあるとします。

抽象クラスA { 
    抽象m():void; 
}

継承に関しては、C#やJavaのように、この抽象クラスを次のように継承できます。

// TypeScript 
クラスBはA {
}を拡張します

ただし、実装に関しては、TypeScriptでクラスを実装することもできます。

クラスCはA { 
    m()を実装します:void {} 
}

それで、ここに質問があります:クラスBとクラスCの動作の違いは何ですか?どうやって選ぶの?

質疑応答

implementsキーワードは、クラスAをインターフェースとして扱います。つまり、クラスCは、クラスAにデフォルトの実装があるかどうかにかかわらず、クラスCがAで定義されているすべてのメソッドを実装する必要があります。同時に、クラスCでスーパーメソッドを定義する必要はありません。

そして、extendsキーワード自体の意味と同様に、クラスAで定義された仮想メソッドを実装するだけでよく、super呼び出しも有効になります。

抽象メソッドの場合、これは何の違いもないと思います。ただし、抽象メソッドのみを使用するクラスは非常に少ないため、抽象メソッドのみを使用する場合は、それらをインターフェイスに変換することをお勧めします。

 

転載:https://www.cnblogs.com/pangjianxin/p/10901115.html

TypeScriptでは、クラスを実装または拡張できることがわかっています。上記の2つのオブジェクト指向言語では実装できるのはクラスだけで、クラスだけなので、一部のC#またはJavaベースの学生はこれについて混乱する可能性があります。拡張するために。TypeScriptでこれら2つのキーワードがどのように異なるかを説明しましょう。最近StackOverflowでこの問題を見つけたので、翻訳して記録しました。元のアドレスは次のとおりです:https://stackoverflow.com/questions/35990538/extending-vs-implementing-a-pure-abstract-class- in-typescript / 35990799#35990799

問題の説明

TypeScriptでの純粋な抽象クラスの拡張と実装

クリーンな抽象クラスAがあるとします。

抽象クラスA { 
    抽象m():void; 
}

継承に関しては、C#やJavaのように、この抽象クラスを次のように継承できます。

// TypeScript 
クラスBはA {
}を拡張します

ただし、実装に関しては、TypeScriptでクラスを実装することもできます。

クラスCはA { 
    m()を実装します:void {} 
}

それで、ここに質問があります:クラスBとクラスCの動作の違いは何ですか?どうやって選ぶの?

質疑応答

implementsキーワードは、クラスAをインターフェースとして扱います。つまり、クラスCは、クラスAにデフォルトの実装があるかどうかにかかわらず、クラスCがAで定義されているすべてのメソッドを実装する必要があります。同時に、クラスCでスーパーメソッドを定義する必要はありません。

そして、extendsキーワード自体の意味と同様に、クラスAで定義された仮想メソッドを実装するだけでよく、super呼び出しも有効になります。

抽象メソッドの場合、これは何の違いもないと思います。ただし、抽象メソッドのみを使用するクラスは非常に少ないため、抽象メソッドのみを使用する場合は、それらをインターフェイスに変換することをお勧めします。

 

おすすめ

転載: www.cnblogs.com/Ewarm/p/12690917.html