derived

継承 (Web IDL)

仕様書

構文

[2] インターフェイスの継承は、

interface derived-interface : inherited-interface {
  ...
};
... のように表します >>1。

[13] 辞書の継承は、

dictionary derived-dict : inherited-dict {
  ...
};
... のように表します >>12。

[27] 例外の継承は、

exception derived-exception : inherited-exception {
  ...
};
... のように表します >>26。

インターフェイスの継承

[3] あるインターフェイスが別のインターフェイスから継承 (inherit) する場合、 前者に対して後者のことを被継承インターフェイス (inherited interface) 、 後者に対して前者のことを派生インターフェイス (derived interface) といいます >>1。

[15] インターフェイスが継承するのはインターフェイスでなければなりません。

[11] インターフェイスには通常のインターフェイスとコールバックインターフェイスがありますが、 継承関係にある2つのインターフェイスは同じ種類でなければなりません。

[5] あるインターフェイスが直接または間接に継承するインターフェイスの集合を被継承インターフェイス群 (inherited interfaces) といいます >>1。

[6] 当該インターフェイス自身は、被継承インターフェイスではありません。

[7] 被継承インターフェイス群に当該インターフェイス自身が含まれていてはなりません (循環するような継承はできません) >>1。

[4] あるインターフェイスを実装するオブジェクトは、その被継承インターフェイスも実装することになります。 >>1

[9] 多重継承はできません >>1。

[8] ちなみにあるオブジェクトが実装できるのは、特定のインターフェイスだけです >>1。
[10] ただし implements によって事実上の多重継承は実現できます。

[36] 被継承インターフェイスを持つインターフェイスには ArrayClass 拡張属性や MapClass 拡張属性を指定できません。

辞書の継承

[14] ある辞書が別の辞書から継承 (inherit) する場合、 前者に対して後者のことを被継承辞書 (inherited dictionary) 、 後者に対して前者のことを派生辞書 (derived dictionary) といいます >>12。

[16] 辞書が継承するのは辞書でなければなりません >>12。

[17] ある辞書が直接または間接に継承する辞書の集合を被継承辞書群 (inherited dictionaries) といいます >>12。

[18] 当該辞書自身は、被継承辞書ではありません。

[19] 被継承辞書群に当該辞書自身が含まれていてはなりません (循環するような継承はできません) >>12。

[20] 辞書値 (辞書の実現値) は、辞書とその被継承辞書のメンバーに対応するキーと値の組を持つことができます >>12。

[21] 被継承辞書のメンバーのことは被継承メンバー (inherited member) >>12 と呼ばれています。

[24] 辞書メンバーの名前は、被継承メンバーのものと衝突してはなりません >>12。

[25] インターフェイスとは違って辞書のメンバーは上書きできません。

[22] 辞書メンバーは、その所属する辞書や被継承辞書、 あるいはメンバーまたは被継承メンバーが所属辞書を型として含むような辞書を型としてはなりません >>12。

[23] 辞書における辞書メンバーの順序は、被継承メンバーの後にそれ以外のメンバーとされています >>12。

歴史

例外の継承

[28] ある例外が別の例外から継承 (inherit) する場合、 前者に対して後者のことを被継承例外 (inherited exception) 、 後者に対して前者のことを派生例外 (derived exception) といいます >>26。

[29] 例外が継承するのは例外でなければなりません >>26。

[30] ある例外が直接または間接に継承する例外の集合を被継承例外群 (inherited exceptions) といいます。

[31] 当該例外自身は、被継承例外ではありません。

[32] 被継承例外群に当該例外自身が含まれていてはなりません (循環するような継承はできません) >>26。

[33] ある例外を実装するオブジェクトは、その被継承例外も実装することになります。 >>26

[34] 多重継承はできません >>26。

[35] 現実に例外の継承が利用された例はありません。

[37] Add support for interface mixins (tobie著, ) https://github.com/heycam/webidl/commit/45e8173d40ddff8dcf81697326e094bcf8b92920

[38] Tighten the grammar for the 'inherit' keyword (#704) (Ms2ger著, ) https://github.com/heycam/webidl/commit/a76db666b59eaaba9b6c294997a53198d45fe965

[39] Tighten the grammar for the 'inherit' keyword by Ms2ger · Pull Request #704 · heycam/webidl () https://github.com/heycam/webidl/pull/704

[40] ReadWriteAttribute production should not allow using "readonly" with inherit · Issue #703 · heycam/webidl () https://github.com/heycam/webidl/issues/703