Разделение на подклассы нескольких классов

Задайте несколько суперклассов

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

classdef ClassName < SuperClass1 & SuperClass2

Для получения дополнительной информации о синтаксисе класса смотрите Синтаксис Подкласса.

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

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

Вот различные ситуации, где можно разрешить конфликты определения и имя.

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

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

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

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

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

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

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

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

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

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

  • Суперклассы задают методы как Abstract и используйте подкласс, чтобы задать метод.

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

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

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

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

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

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

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

  • Краткий обзор

  • Заданный подклассом

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

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

Похожие темы