Sobes.tech
Junior

Qual é a diferença entre uma classe simples e uma classe open em Swift?

sobes.tech IA

Resposta da IA

No Swift, por padrão, todas as classes são final — não podem ser herdadas. Para que uma classe possa ser herdada, ela deve ser declarada como open ou public, mas há diferenças importantes entre elas:

  • open — o nível de acesso mais aberto. Uma classe com o modificador open pode ser herdada e seus métodos podem ser sobrescritos tanto dentro quanto fora do módulo.
  • public — a classe está disponível para uso fora do módulo, mas herdar e sobrescrever métodos só é possível dentro do mesmo módulo.

Assim, uma classe open permite expandir e modificar o comportamento em outros módulos, enquanto uma classe simples (por exemplo, public) não.

Exemplo:

open class OpenClass {
    open func greet() {
        print("Hello from OpenClass")
    }
}

public class PublicClass {
    public func greet() {
        print("Hello from PublicClass")
    }
}

// Em outro módulo, é possível herdar de OpenClass e sobrescrever greet(),
// mas não de PublicClass.