При наследовании нескольким классам используйте символ &
, чтобы указать на комбинацию суперклассов:
classdef ClassName < SuperClass1 & SuperClass2
Для получения дополнительной информации о синтаксисе класса смотрите Синтаксис Подкласса.
Когда вы создаете подкласс, выведенный из нескольких суперклассов, подкласс наследовал свойства, методы и события, заданные всеми заданными суперклассами. Если больше чем один суперкласс задает свойство, метод или событие, имеющее то же имя, должно быть однозначное разрешение повторных определений. Вы не можете вывести подкласс ни от каких двух или больше классов, которые задают несовместимые члены класса.
Вот различные ситуации, где можно разрешить конфликты определения и имя.
Если два или больше суперкласса задают свойство с тем же именем, то по крайней мере одно из следующего должно быть верным:
Все, или у всех кроме одного из свойств должны быть их SetAccess
и набор атрибутов GetAccess
к private
Свойства имеют то же определение во всех суперклассах (например, когда все суперклассы наследовали свойство от общего базового класса),
Если два или больше суперкласса задают методы с тем же именем, то по крайней мере одно из следующего должно быть верным:
Метод атрибутом Access
является private
поэтому только суперкласс определения, может получить доступ к методу.
Метод имеет то же определение во всех подклассах. Эта ситуация может произойти, когда все суперклассы наследовали метод от общего базового класса, и ни один из суперклассов не заменяет наследованное определение.
Подкласс переопределяет метод, чтобы снять неоднозначность повторных определений через все суперклассы. Поэтому методы суперкласса не должны иметь своего набора атрибута Sealed
к true
.
Только один суперкласс задает метод как Sealed
, в этом случае, подкласс принимает изолированное определение метода.
Суперклассы задают методы как Abstract
и полагаются на подкласс, чтобы задать метод.
Если два или больше суперкласса задают события с тем же именем, то по крайней мере одно из следующего должно быть верным:
Атрибутами события ListenAccess
и NotifyAccess
должен быть private
.
Событие имеет то же определение во всех суперклассах (например, когда все суперклассы наследовали событие от общего базового класса),
Решение потенциальных конфликтов, включенных при определении подкласса от нескольких классов часто, уменьшает значение этого подхода. Например, проблемы могут возникнуть, когда вы улучшаете суперклассы в будущих версиях и представляете новые конфликты.
Уменьшите потенциальные проблемы путем реализации только одного неограниченного суперкласса. Во всех других суперклассах все методы
Краткий обзор
Заданный подклассом
Наследованный от неограниченного суперкласса
При использовании множественного наследования гарантируйте, чтобы все суперклассы остались свободными от конфликтов в определении.