В Swift механизм открытых и закрытых записей реализуется с помощью ключевых слов open и public для доступа извне модуля, а также final для предотвращения наследования и переопределения.
open: Позволяет классу или члену класса (методу, свойству и т. д.) быть унаследованным и переопределенным вне модуля, в котором они определены. Это наименее строгий уровень ограничения.public: Позволяет классу или члену класса быть доступным вне модуля, но не разрешает его наследование или переопределение вне этого модуля.final: Может быть применен к классу, методу или свойству.
Таким образом, "открытые записи" можно рассматривать как сущности, определенные с open, допускающие широкое взаимодействие извне (наследование, переопределение). "Закрытые записи" могут быть представлены сущностями с final (полностью закрыты от наследования/переопределения) или public (доступны, но не могут быть унаследованы/переопределены извне модуля).
Пример:
swift
swift
Таблица, обобщающая уровни доступа:
| Уровень доступа | Описание | Доступно из | Наследуется извне модуля? | Переопределяется извне модуля? |
|---|---|---|---|---|
open | Наименее строгий | Весь модуль + Вне модуля | Да | Да |
public | Доступно извне, но не для наследования/переопределения | Весь модуль + Вне модуля | Нет | Нет |
internal | По умолчанию | Весь модуль | Нет | Нет |
fileprivate | Только в пределах файла | Только файл | Нет | Нет |
private | Только в пределах декларации (класс, структура и т.д.) | Только декларация | Нет | Нет |