デフォルトでは、派生コンポーネントはそのベースコンポーネントの、アクセス可能なすべてのインストールブロックを継承します。
派生コンポーネントは、ベースコンポーネントから継承されたインストールブロックに含まれない名前を使用して別のインストールブロックを定義できます。 派生コンポーネントは、同じ名前を使用してブロックを宣言し直すことにより、継承された非最終インストールブロックを無効にできます。 ブロックの無効は名前を使用してしか行えず、パラメタに基づいてオーバーロード (多重定義) することはできません。 ブロックを無効にする場合は、ブロックの全コンテンツ (アクセスモード、修飾子、パラメタ、および本体) を宣言し直す必要があります。 本体を指定できるのは、優先するブロックが非抽象の場合だけです。 アクセスモードは、ベースコンポーネントよりも厳しくすることはできません。
派生コンポーネント内のブロックを優先するシグニチャーは、ベースコンポーネントのシグニチャーと互換性がなければなりません。 互換性があるということは、ベースブロックが使用できる引数はすべて派生ブロックでも使用できることを意味します。
派生ブロックは、次の条件が満たされる場合にベースブロックと互換性があります。
必須パラメタを新たに宣言していない
親ブロックで省略可能なパラメタを必須パラメタとして再定義していない
以下のシグニチャー変更は互換性があると見なされます。
パラメタ (必須パラメタまたは省略可能パラメタ) の削除
必須パラメタを省略可能に変更する
省略可能パラメタの追加
ブロックを無効にすると、ベースコンポーネント内の参照も含め、そのブロックに対する参照はすべて無効にされた値に評価されます。
派生コンポーネントを非抽象と宣言する場合は、ベースコンポーネントによって宣言されているすべての抽象ブロックを派生コンポーネントによって無効にする必要があります。
派生コンポーネント内のブロックは、<superComponent> ターゲッターを使用してブロックを無効にする場合でも、ベースコンポーネントによって定義されているブロックを明示的に呼び出すことができます。