(На Оберонах я не программировал, только читал сообщения о языках.)В сообщениях о языках
Оберон и
Оберон-07 написано, что область действия записи является определением записи, но видна также в селекторе записи:
Цитата:
The scope of these field identifiers is the record definition itself, but they are also visible within field designators.
Если тип записи экспортируется, то идентификаторы полей, которые должны быть видимы вне определяющего модуля, должны быть помечены:
Цитата:
If a record type is exported, field identifiers that are to be visible outside the declaring module must be marked.
Про расширение записей сказано лишь то, что типы записей расширяемы:
Цитата:
Record types are extensible, i.e. a record type can be defined as an extension of another record type.
Однако, точного определения слова «расширение» не даётся.
В
Обероне-2 и
Компонентном Паскале есть дополнительное уточнение, что идентификаторы расширения не должны конфликтовать с идентификаторами базовой записи:
Цитата:
All identifiers declared in the extended record must be different from the identifiers declared in its basse type record(s).
Возникли вопросы:
1. Могут ли в Обероне/Обероне-07 поля производных записей перекрывать одноимённые поля в базовых записях?
2. Могут ли в Обероне-2/Компонентном Паскале поля записей перекрывать одноимённые
закрытые поля базовых записей. Если
не могут, то это нарушение инкапсуляции.