// A convenient function that can be used for any abstract method
function abstractmethod() { throw new Error("abstract method"); }
// The AbstractSet class defines a single abstract method, contains().
function AbstractSet() { throw new Error("Can't instantiate abstract classes");}
AbstractSet.prototype.contains = abstractmethod;
「JavaScript:The Definitive Guide - 9.7.4クラスの階層と抽象クラス」から 私はJavaScriptで抽象クラスのユーティリティを理解しています。私が理解していないことは、エラーを投げるだけの抽象メソッドを設定する必要性または使用です。そのクラスのインスタンスを作成することはできないため、サブクラスのインスタンスのみが存在します。彼らはそれぞれ、これらのメソッドのための独自の定義を持っているでしょう、なぜ、単に汎用エラーをスローするメソッドへの継承を確立するのですか?javascriptで抽象メソッドの目的は何ですか?
ご指導いただきありがとうございます。
これらはエラーをスローするため、正確に「抽象的」です。これは、抽象基本クラスの意図しない使用を防ぐためのメカニズムです。 –
はい、これはコンストラクタの 'スロー'を説明します。私は何もしないだけでエラーを投げるプロトタイプメソッドの作成について混乱しています。 contains()メソッドがここでエラーを投げるのに役立つ場合、実際にはより完全に定義する最初のサブクラス(抽象コンクリート)で定義するのを待つのはなぜですか? – Marlin
なぜそれを定義するのを待つのですか?これは、サブクラスが従うべき「契約」を定義する抽象/基本クラスです。それを実装するクラスは例外を取り除き、それをオーバーライドします。そうでないクラス(抽象サブクラス)は、例外を提供するためにその親クラスに依存することができます。 –