Sobes.tech
Junior

La classe open è finale o non finale?

sobes.tech AI

Risposta dell'AI

Non finale. La parola chiave open indica chiaramente che puoi ereditare da questa classe e sovrascrivere i suoi membri.

open class BaseClass {
    open func someMethod() {
        // Implementazione predefinita
    }
}

class DerivedClass: BaseClass {
    override open func someMethod() {
        // Implementazione sovrascritta
    }
}

Confrontiamo con altri modificatori di accesso:

Modificatore Ereditarietà Sovrascrittura dei membri
private No (nel file/ambito) No
fileprivate No (nel file) No
internal Sì (nel modulo) Sì (nel modulo)
public Sì (nel modulo) Sì (nel modulo)
open Sì (in qualsiasi modulo) Sì (in qualsiasi modulo)
final No No

Una classe o membro contrassegnato come final non può essere sovrascritto o ereditato, rendendolo finale. open fa l'opposto.