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.