exponenta event banner

Подкласс нескольких классов

Указать несколько суперклассов

При наследовании от нескольких классов используйте & символ для обозначения комбинации суперклассов:

classdef ClassName < SuperClass1 & SuperClass2

Дополнительные сведения о синтаксисе класса см. в разделе Синтаксис подкласса.

Совместимость членов класса

При создании подкласса, производного от нескольких суперклассов, подкласс наследует свойства, методы и события, определенные всеми указанными суперклассами. Если свойство, метод или событие, имеющие одно и то же имя, определяются несколькими суперклассами, необходимо однозначное разрешение множественных определений. Невозможно получить подкласс из двух или более классов, которые определяют несовместимые члены класса.

Здесь представлены различные ситуации, в которых можно разрешить конфликты имен и определений.

Конфликты свойств

Если два или более суперкласса определяют свойство с одинаковым именем, то, по крайней мере, одно из следующих значений должно быть истинным:

  • Все или все свойства, кроме одного, должны иметь свои SetAccess и GetAccess атрибуты установлены в значение private

  • Свойства имеют одинаковое определение во всех суперклассах (например, когда все суперклассы унаследовали свойство от общего базового класса)

Конфликты методов

Если два или более суперкласса определяют методы с одинаковым именем, то, по крайней мере, одно из следующих значений должно быть истинным:

  • Метод Access атрибут - private таким образом, только определяющий суперкласс может получить доступ к методу.

  • Метод имеет одинаковое определение во всех подклассах. Такая ситуация может возникнуть, когда все суперклассы наследуют метод из общего базового класса, и ни один из суперклассов не переопределяет унаследованное определение.

  • Подкласс переопределяет метод для устранения неоднозначности множественных определений во всех суперклассах. Поэтому методы суперкласса не должны иметь Sealed атрибут имеет значение true.

  • Только один суперкласс определяет метод как Sealed, в этом случае подкласс принимает определение запечатанного метода.

  • Суперклассы определяют методы как Abstract и использовать подкласс для определения метода.

Конфликты событий

Если два или более суперкласса определяют события с одинаковым именем, то, по крайней мере, одно из следующих значений должно быть истинным:

  • Событие ListenAccess и NotifyAccess атрибуты должны быть private.

  • Событие имеет одинаковое определение во всех суперклассах (например, когда все суперклассы унаследовали событие от общего базового класса)

Множественное наследование

Разрешение потенциальных конфликтов, возникающих при определении подкласса из нескольких классов, часто снижает значение этого подхода. Например, проблемы могут возникнуть при расширении суперклассов в будущих версиях и появлении новых конфликтов.

Сокращение потенциальных проблем за счет реализации только одного неограниченного суперкласса. Во всех остальных суперклассах все методы

  • Резюме

  • Определяется подклассом

  • Унаследовано от неограниченного суперкласса

При использовании множественного наследования убедитесь, что все суперклассы остаются свободными от конфликтов в определении.

Связанные темы