Junior
Qual é a diferença entre open e public?
sobes.tech IA
Resposta da IA
open permite herdar e sobrescrever membros em qualquer módulo, enquanto que public permite usar membros em qualquer módulo, mas herança e sobrescrita são permitidas apenas dentro do mesmo módulo onde o membro é declarado.
| Característica | open |
public |
|---|---|---|
| Acesso | Qualquer módulo | Qualquer módulo |
| Herança | Qualquer módulo | Apenas no seu próprio módulo |
| Sobrescrita | Qualquer módulo | Apenas no seu próprio módulo |
Exemplo:
// Módulo A
open class OpenClass {
open func openMethod() { }
public func publicMethod() { }
}
public class PublicClass {
public func publicMethod() { }
}
// Módulo B
import ModuleA
class SubclassOfOpen: OpenClass {
override func openMethod() {
// Possível em Módulo B
}
// Erro: publicMethod permitido usar, mas não sobrescrever fora do Módulo A
// override func publicMethod() { }
}
// Erro: PublicClass não permite herança fora do Módulo A
// class SubclassOfPublic: PublicClass { }