Sobes.tech
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 open pode ser herdada e sobrescrita em qualquer outro módulo (por exemplo, em outro framework ou aplicação).
  • Uma classe sem o modificador open (normalmente public ou 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