Назад к вопросам
Junior
78
questionbank
В чем разница между open и public?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
open позволяет наследоваться и переопределять членов в любом модуле, тогда как public позволяет использовать членов в любом модуле, но наследование и переопределение разрешены только в рамках того же модуля, где член объявлен.
| Характеристика | open |
public |
|---|---|---|
| Доступ | Любой модуль | Любой модуль |
| Наследование | Любой модуль | Только свой модуль |
| Переопределение | Любой модуль | Только свой модуль |
Пример:
// Module A
open class OpenClass {
open func openMethod() { }
public func publicMethod() { }
}
public class PublicClass {
public func publicMethod() { }
}
// Module B
import ModuleA
class SubclassOfOpen: OpenClass {
override func openMethod() {
// Возможно в Module B
}
// Ошибка: publicMethod разрешено использовать, но не переопределять вне Module A
// override func publicMethod() { }
}
// Ошибка: PublicClass не разрешает наследование вне Module A
// class SubclassOfPublic: PublicClass { }