Справочное руководство по языку Ада-83


Производные типы - часть 2


• Если родительский тип — ссылочный тип, то родительский и производный типы имеют один и тот же набор; существует пустое ссылочное значение для производного типа, которое по умолчанию является значением этого типа.

• Если существует явный спецификатор представления для родительского типа и если этот спецификатор расположен до (но не после) определения производного типа, то соответствующий спецификатор представления неявно задан и для производного типа.

• Подпрограммы, которые являются операциями над родительским типом, называются наследуемыми. Для каждой наследуемой подпрограммы родительского типа имеется соответствующая производная подпрограмма над производным типом. Могут быть выделены два сорта наследуемых подпрограмм. Во-первых, если родительский тип описан непосредственно в видимом разделе пакета, то подпрограмма, явно описанная непосредственно в видимом разделе, становится наследуемой после конца видимого раздела (если подпрограмма — операция над родительским типом). (Явное описание — это описание подпрограммы, описание переименования подпрограммы или конкретизация настройки.) Во-вторых, если родительский тип сам является производным и не описан в видимом разделе пакета, то подпрограмма, которая стала наследуемой, и она не скрыта наследуемой подпрограммой первого сорта, является далее наследуемой.

Описание производного типа неявно описывает операции над производным типом. Неявные описания любых производных подпрограмм следуют за описанием производного типа.

Спецификация производной подпрограммы неявно получается систематическим замещением родительского типа на производный тип в спецификации наследуемой подпрограммы. Любой подтип родительского типа подобным образом замещается подтипом производного типа с аналогичными ограничениями (как при замене ограничения родительского подтипа на соответствующее ограничение производного подтипа). Наконец, любое выражение родительского типа можно использовать как операнд преобразования типа, которое вырабатывает результат производного типа.




Начало  Назад  Вперед