Sobes.tech
Junior

A classe open é final ou não final?

sobes.tech IA

Resposta da IA

Não final. A palavra-chave open indica claramente que pode herdar desta classe e substituir os seus membros.

open class BaseClass {
    open func someMethod() {
        // Implementação padrão
    }
}

class DerivedClass: BaseClass {
    override open func someMethod() {
        // Implementação substituída
    }
}

Vamos comparar com outros modificadores de acesso:

Modificador Herança Substituição de membros
private Não (dentro do ficheiro/escopo) Não
fileprivate Não (dentro do ficheiro) Não
internal Sim (dentro do módulo) Sim (dentro do módulo)
public Sim (dentro do módulo) Sim (dentro do módulo)
open Sim (em qualquer módulo) Sim (em qualquer módulo)
final Não Não

Uma classe ou membro marcado como final não pode ser sobrescrito ou herdado, tornando-o final. open faz o oposto.