Кое-что о политике

We use cookies. Read the Privacy and Cookie Policy

Кое-что о политике

Что происходит со статусом экспорта при передаче компонента потомку? Наследование и скрытие информации - ортогональные механизмы. Наследование определяет отношение между классом и его потомками, экспорт - между классом и его клиентами. Класс B может свободно экспортировать или скрывать любой из компонентов f, унаследованных им от класса A. При этом доступны все возможные комбинации:

[x]. f экспортируется в классе A и в классе B (хотя и не обязательно одним и тем же клиентам);

[x]. f скрыто в A и B;

[x]. f скрыто в A, но полностью или частично экспортируется в B;

[x]. f экспортируется в A, но скрыто в B.

Правило гласит: по умолчанию f сохраняет тот статус экспорта, которым компонент был наделен в A. Однако его можно изменить, добавив предложение export в предложение наследования класса. Например:

class B inherit

A

export {NONE} f end

-- Скрыть f (возможно, экспортируемый в классе A)

...

или

class B inherit

A

export {ANY} f end

-- Экспортировать f (возможно, скрытый в классе A)

...

или

class B inherit

A

export {X, Y, Z} f end

-- Сделать f доступным определенным классам

...