Какой уровень доступа (access control) у класса в Swift по умолчанию?

«Какой уровень доступа (access control) у класса в Swift по умолчанию?» — вопрос из категории Swift Core, который задают на 10% собеседований IOS Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Уровень доступа по умолчанию: internal.

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

Пример:

// Объявлен в модуле 'MyFramework'
class MyClass { // internal по умолчанию
    var property: Int = 0
}
// Доступен везде внутри MyFramework, но не виден в другом импортирующем приложении.

Иерархия уровней доступа (от наиболее строгого к наименее строгому):

  1. private — доступ только в пределах текущей области объявления (включая расширения в том же файле).
  2. fileprivate — доступ в пределах исходного файла.
  3. internal(по умолчанию) доступ в пределах всего модуля.
  4. public — доступ за пределами модуля, но наследование и переопределение ограничены внутри модуля.
  5. open — доступ за пределами модуля, включая возможность наследования и переопределения.