[解決済み] TypeScriptで純粋な抽象クラスを拡張する場合と実装する場合
2023-03-29 06:19:23
質問
純粋な抽象クラス(つまり、実装のない抽象クラス)があるとします。
abstract class A {
abstract m(): void;
}
C#やJavaのように を拡張します。 という抽象的なクラスがあります。
class B extends A {
m(): void { }
}
しかし とは異なり では、C#やJavaでも インプリメント を実装することができます。
class C implements A {
m(): void { }
}
クラスはどのように
B
と
C
は異なる動作をするのでしょうか?なぜどちらかを選択しなければならないのでしょうか?
(現在、TypeScriptの ハンドブック と 言語仕様 は抽象クラスは対象外です)。
どのように解決するのですか?
この が実装している キーワードは A クラスをインターフェースとして扱い、つまり C は A で定義された全てのメソッドを実装しなければなりません。 に実装されているかどうかに関わらず、C は A で定義された全てのメソッドを実装しなければならないことを意味します。 A . また、スーパーメソッドの呼び出しは C .
が伸びる は、このキーワードから期待されるものに近い振る舞いをします。抽象的なメソッドのみを実装すればよく、スーパーコールは利用可能/生成されます。
抽象的なメソッドの場合、違いはないのでしょう。しかし、めったにないことですが クラス を持つことは稀であり、もしあれば、それを インターフェース .
生成されたコードを見ればすぐにわかると思います。プレイグラウンドの例を作ってみました ここで .
関連
-
[解決済み] インターフェースと抽象クラスの違いは何ですか?
-
[解決済み] インターフェースと抽象クラス(一般的なOO)
-
[解決済み] TypeScriptで文字列を数値に変換する方法とは?
-
[解決済み] 抽象クラスはコンストラクタを持つことができますか?
-
[解決済み] いつ使うか。Java 8+のインターフェイスのデフォルトメソッドと、抽象的なメソッドの比較
-
[解決済み] Pythonにおける抽象クラスとインターフェースの違い
-
[解決済み] Objective-Cで抽象クラスを作成する
-
[解決済み】TypeScriptのインターフェースと型について
-
[解決済み] tsc が `TS2307: Cannot find module` for a local file をスローします。
-
[解決済み] タイプスクリプトのパイプ(|)の意味とは?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] TypeScriptの「extends」と「implements」の違いとは?
-
[解決済み] タイプスクリプトのパイプ(|)の意味とは?
-
[解決済み] タイプスクリプト。カスタムタイプに対する typeof のチェック
-
[解決済み] ngForとAsync Pipe Angular 2でObservableオブジェクトから配列を利用する。
-
[解決済み] typescriptでmoment.jsをインポートするには?
-
[解決済み] TypeScriptをminifiedコードにコンパイルすることは可能ですか?
-
[解決済み] Typescript で Enum を制限付きキータイプとして使用する
-
[解決済み] Typescriptで<T>は何を意味するのですか?
-
[解決済み] Typescript でエラーをスローする関数を宣言する方法
-
[解決済み] typescript の module.exports