派生

継承 (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