デザインは別のデザインからルールを継承することや、複数のデザインからルールを継承することができます(複数継承)。デザインが継承する最初のデザインはプライマリ mixin と呼ばれます。後続の継承されるデザインは補助デザインと呼ばれます。
プライマリ mixin デザインは、(デザイン エディタの)デザイン ツリーの下位デザインを編成するためによく使用されます(ただしそれ以外にも使用されます)。他のデザインから継承されたルールは、継承するデザイン自体に含まれている場合と同じように機能します。
デザイン内で直接宣言されているルールは、そのデザインに所有されていると言います。デザインによって所有されているルールは、別のデザインから継承された同名ルールを上書きします。複数継承の場合、同名ルールが複数の継承デザインに存在する場合があります。mixin 一覧の一番左にあるルールが優先されます。
たとえば、プライマリ mixin と 2 つの補助デザインで構成されている継承一覧について考えます。
Design Test1 : Tests FirstAux SecondAux LightweightPart Rule myRule As Integer myRule = someRule printValue( "The value of myRule = " & stringValue(myRule)) End Rule End Design
継承されるすべてのデザインに同名ルール、someRule が含まれていて、someRule の値が継承される各デザインで異なると仮定します。
Design Tests : ETOSamplesRoot Rule someRule As Integer = 10 End Design
Design FirstAux : ETOSamplesRoot Rule someRule As Integer = 1 End Design
Design SecondAux : ETOSamplesRoot Rule someRule As Integer = 2 End Design
プライマリ mixin のルールはいずれの補助デザインの同名ルールよりも優先されます。Tests で定義されている someRule という名前のルールは、Test1 の myRule の値を計算するために使用されます。
' Output "The value of myRule = 10"
今度は、2 つの補助デザインにのみ同名ルールが存在すると仮定します。この場合、一番左にある補助デザイン、FirstAux のルールが 2 番目の補助デザインの同名ルールよりも優先されます。
' Output "The value of myRule = 1"