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

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

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

classdef ClassName < SuperClass1 & SuperClass2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Похожие темы

Была ли эта тема полезной?