Skip to main content

Inheritance (クラス・キーワード)

このクラスのスーパークラスの継承順序を指定します。

使用法

このクラスのスーパークラスの継承順序を指定するには、以下の構文を使用します。

Class MyApp.MyClass Extends (MySuperClass1, MySuperClass2) [ Inheritance = inheritancedirection ] { 
 //class members
}

inheritancedirectionleft または right です。このキーワードは省略することもできます。その場合、InterSystems IRIS は既定の継承順序 (left) を使用します。

すべての新規プログラミングで left の継承順序を使用することをお勧めします。

詳細

Inheritance キーワードで、多重継承によるクラスの継承順序を指定します。inheritancedirection の値に left を指定すると左から右への継承、right を指定すると右から左への継承になります。

例えば、以下のように、クラス X が、クラス AB、および C から継承するとします。

Class X Extends (A, B, C) 
{
}

クラス・コンパイラの既定の継承順序は左から右なので、スーパークラスどうしでメンバ定義に相違がある場合は、最も左に記述されたスーパークラスを優先することで解決されます (この例では、ABC よりも優先し、BC よりも優先します)。

具体的には、クラス X の場合、クラス・パラメータ値、プロパティ、およびメソッドの値は、クラス A (リストの先頭にあるスーパークラス) から継承され、次にクラス B、最後にクラス C から継承されます。また、X は、A で定義されていないクラス・メンバを B から継承し、A でも B でも定義されていないクラス・メンバを C から継承します。A から既に継承したクラス・メンバと同じ名前のメンバが B にある場合、X では A から継承した値を使用します。同様に、A または B のいずれかから継承したクラス・メンバと同じ名前のメンバが C にある場合は、ABC の優先順位で値を使用します。

スーパークラス間で右から左への継承を指定するには、以下のように Inheritance キーワードを使用して right の値を指定します。

Class X Extends (A, B, C) [ Inheritance = right ]
{
}

右から左への継承では、複数のスーパークラスが同じ名前のメンバを持つ場合、右側のスーパークラスにあるメンバの値が優先します。

Right の継承に関する注意事項

右から左への継承でも、最も左に記述したスーパークラス (最初のスーパークラスと呼ばれることもあります) がプライマリ・スーパークラスであることは変わりません。つまり、サブクラスは最も左にあるスーパークラスからクラス・キーワード値のみを継承します。この動作はオーバーライドされません。

また、右から左への継承では、スーパークラスを変更してリコンパイルする場合、サブクラスを手動でリコンパイルする必要があります。

サブクラスへの影響

このキーワードは継承されません。

既定値

このキーワードを省略すると、継承順序は left になります。

関連項目

FeedbackOpens in a new tab