Swift предоставляет пять уровней контроля доступа, которые определяют видимость и возможность наследования типов, свойств и методов между модулями и файлами.
open — доступен и может быть унаследован из любого модуляpublic — доступен из любого модуля, но наследование и переопределение ограничены модулем, в котором определён типinternal — уровень по умолчанию; доступен везде в пределах одного модуляfileprivate — доступен только в пределах одного файла исходного кодаprivate — самый ограничивающий уровень; доступен только в пределах своего объявления и его расширений в том же файлеЧаще всего путают open и public:
open class Animal {} // Может быть унаследован в любом модуле
public class Vehicle {} // Может быть унаследован только в своём модуле
Чаще всего путают на уровне файлов fileprivate и private:
private скрывает член от всего, что находится вне его типа-контейнераfileprivate разрешает доступ другим типам в пределах одного файлаopen или public для API фреймворков, предназначенных для внешних потребителейinternal для кода, общего внутри приложения или модуляfileprivate для совместного использования деталей реализации между типами в одном файлеprivate для обеспечения инкапсуляции на уровне объявленияУровень доступа open позволяет создавать подклассы класса и переопределять его методы из любого модуля, в то время как public ограничивает создание подклассов и переопределение только определяющим модулем.
Новый — ещё не проверен сообществом
Вы