By default, a derived component inherits all component references of its base component.
If the <componentRefList> element of the base component is non-final, the a derived component may define additional component references by using names that are not among those of the component references inherited from the base component.
A derived component may override a component reference of a non-final inherited component reference by redeclaring a component reference with the same name. When a component reference is overridden, the entire content of the component reference must be re-declared. The overriding installMode must be the same as that of the original reference. The overriding <type> element must be an instance of the original type. The overriding <argList> element is merged with the original, as described in the following section. The <component> element is specified if and only if the overriding reference is non-abstract.
When a component reference is overridden, all uses of the component reference evaluate to the overridden value, including those in the base component.
If the derived component is declared as non-abstract, then any abstract component references declared by the base component must be overridden by the derived component.