Junior — Middle
Qual é a diferença entre uma declaração de classe com a palavra-chave open e uma definição de classe normal sem esse modificador?
sobes.tech IA
Resposta da IA
Na linguagem Swift, por padrão, todas as classes são fechadas para herança (final). Isto significa que, sem o modificador open ou public, uma classe não pode ser herdada fora do módulo onde é declarada.
- Uma classe declarada com a palavra-chave
openpode ser herdada e sobrescrita em qualquer outro módulo (por exemplo, em outro framework ou aplicação). - Uma classe sem o modificador
open(normalmentepublicou sem modificador) não pode ser herdada fora do módulo atual.
Assim, open é o nível de acesso mais "aberto" para classes e seus métodos, permitindo expandir a funcionalidade em outros módulos.
Exemplo:
open class OpenClass {
open func doSomething() {}
}
public class PublicClass {
public func doSomething() {}
}
// Herança de OpenClass de outro módulo é possível
// Herança de PublicClass de outro módulo não é possível