В языке Swift по умолчанию все классы являются закрытыми для наследования (final). Это значит, что без модификатора open или public класс нельзя унаследовать за пределами модуля, где он объявлен.
Чем отличается объявление класса с ключевым словом open от обычного определения класса без этого модификатора?
В языке Swift по умолчанию все классы являются закрытыми для наследования (final). Это значит, что без модификатора open или public класс нельзя унаследовать за пределами модуля, где он объявлен.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
В языке Swift по умолчанию все классы являются закрытыми для наследования (final). Это значит, что без модификатора open или public класс нельзя унаследовать за пределами модуля, где он объявлен.
- Класс, объявленный с ключевым словом
open, может быть унаследован и переопределён в любом другом модуле (например, в другом фреймворке или приложении). - Класс без модификатора
open(обычноpublicили без модификатора) нельзя унаследовать вне текущего модуля.
Таким образом, open — это самый «открытый» уровень доступа для классов и их методов, позволяющий расширять функциональность в других модулях.
Пример:
open class OpenClass {
open func doSomething() {}
}
public class PublicClass {
public func doSomething() {}
}
// Наследование OpenClass из другого модуля возможно
// Наследование PublicClass из другого модуля невозможно