Method Conflicts
If two or more superclasses define methods with the same name, then at least one of the
following must be true:
- The method Access attribute is private so only the defining superclass can access
the method. - The method has the same definition in all subclasses. This situation can occur when all
superclasses inherit the method from a common base class and none of the
superclasses override the inherited definition. - The subclass redefines the method to disambiguate the multiple definitions across all
superclasses. Therefore, the superclass methods must not have their Sealed attribute
set to true. - Only one superclass defines the method as Sealed, in which case, the subclass adopts
the sealed method definition. - The superclasses define the methods as Abstract and rely on the subclass to define
the method.
Event Conflicts
If two or more superclasses define events with the same name, then at least one of the
following must be true:
- The event ListenAccess and NotifyAccess attributes must be private.
- The event has the same definition in all superclasses (for example, when all
superclasses inherited the event from a common base class)
Multiple Inheritance
Resolving the potential conflicts involved when defining a subclass from multiple classes
often reduces the value of this approach. For example, problems can arise when you
enhance superclasses in future versions and introduce new conflicts.
Reduce potential problems by implementing only one unrestricted superclass. In all other
superclasses, all methods are
- Abstract
- Defined by a subclass
Subclassing Multiple Classes