В чем разница между модификаторами доступа public и internal в Swift?

«В чем разница между модификаторами доступа public и internal в Swift?» — вопрос из категории Swift Core, который задают на 10% собеседований IOS Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

public и internal — это модификаторы доступа, определяющие область видимости сущностей (классов, свойств, методов) в Swift.

public

  • Доступен везде, включая другие модули.
  • Используется для создания публичного API библиотек и фреймворков.
  • Важно: public-класс не позволяет наследоваться или переопределять его методы вне модуля. Для этого требуется open.
// Модуль MyFramework
public class PublicClass {
    public var value: Int = 10
}
// Доступен в другом модуле: import MyFramework
let obj = PublicClass()

internal

  • Доступен только внутри модуля, где объявлен.
  • Это модификатор по умолчанию, если не указан другой.
  • Невидим для других модулей.
// Модуль MyFramework
internal class InternalClass {}
// Недоступен в другом модуле при импорте

Итог: public — для межмодульного использования, internal — для скрытия деталей реализации внутри модуля.