Sobes.tech
Junior — Middle

Qual è la differenza tra una dichiarazione di classe con la parola chiave open e una definizione di classe normale senza questo modificatore?

sobes.tech AI

Risposta dell'AI

Nel linguaggio Swift, per impostazione predefinita, tutte le classi sono chiuse all'ereditarietà (final). Ciò significa che senza il modificatore open o public, una classe non può essere ereditata al di fuori del modulo in cui è dichiarata.

  • Una classe dichiarata con la parola chiave open può essere ereditata e sovrascritta in qualsiasi altro modulo (ad esempio, in un altro framework o applicazione).
  • Una classe senza il modificatore open (di solito public o senza modificatore) non può essere ereditata al di fuori del modulo corrente.

Pertanto, open è il livello di accesso più "aperto" per le classi e i loro metodi, consentendo di estendere la funzionalità in altri moduli.

Esempio:

open class OpenClass {
    open func doSomething() {}
}

public class PublicClass {
    public func doSomething() {}
}

// L'ereditarietà di OpenClass da un altro modulo è possibile
// L'ereditarietà di PublicClass da un altro modulo non è possibile