ISO2002MF 

クラスの継承

クラスの継承とは、1 つ以上のクラスのインターフェイスおよび実装を、他のクラスの基盤として使用するメカニズムである。継承先のクラス (サブクラスとも呼ばれる) は、1 つ以上のクラス (スーパークラスと呼ばれる) から継承する。サブクラスは継承元のクラスで定義されているすべてのメソッドを受け継ぐ。その中には、継承元がさらに上位から継承したメソッドも含まれる。サブクラスは継承元のクラスで定義されているすべてのデータ定義を受け継ぐ。その中には、継承元がさらに上位から継承したデータ定義も含まれる。

ISO2002MF 注: これは、データを記述した実際のソース コードにアクセスできるということではなく、このソース コードに記述されたデータ項目をサブクラスが直接参照できるということでもない。つまり、サブクラスはそのソース コードにスーパークラスの定義のコピーが含まれているように見なされ、継承されたデータ項目がサブクラスで定義されているものと見なされる。

継承されたデータ定義は、サブクラスのすべてのインスタンス オブジェクトおよびそのファクトリ オブジェクトに対してデータを定義する。各インスタンス オブジェクトは継承されたデータの独自のコピーを持ち、これは継承元のクラスのインスタンス オブジェクトに属するコピーとは異なる。各ファクトリ オブジェクトも継承されたデータの独自のコピーを持ち、これは継承元のクラスのファクトリ オブジェクトに属するコピーとは異なる。継承されたデータ項目の名前および属性は、継承先のクラスでは不可視となる。継承されたオブジェクト データは、オブジェクトの作成時に初期化される。継承されたファクトリ データは、継承元のクラスのファクトリ データから独立して割り当てられ、サブクラスのファクトリの作成時に初期化される。継承されたファクトリ データへのアクセスは、データを記述するクラスのファクトリ定義で指定されたメソッドおよびプロパティを介してのみ可能である。継承されたオブジェクト データへのアクセスも、データを記述するクラスのオブジェクト定義で指定されたメソッドおよびプロパティを介してのみ可能である。サブクラスは、データ定義と同様にすべてのファイル定義を継承し、データ定義と同じ条件に従う。サブクラスは、継承されたメソッドに加えて、またはその代わりにメソッドを定義することができ、継承されたデータ定義およびファイル定義に加えて、データ定義およびファイル定義を指定できる (継承された定義の代わりに別の定義を指定することはできない)。

サブクラスのインターフェイスは、継承元のクラスのインターフェイスに常に準拠する。ただしサブクラスは、継承元のクラスのメソッドの一部をオーバーライドして別の実装を提供できる。

継承元のクラスでユーザーが定義した語はサブクラスに継承されないため、その語は継承元のクラスに定義されていない場合と同様にサブクラス内で定義できる。