Sobes.tech
Junior

Qual è la differenza tra una classe semplice e una classe open in Swift?

sobes.tech AI

Risposta dell'AI

In Swift, per impostazione predefinita tutte le classi sono final — non possono essere ereditate. Per consentire l'ereditarietà di una classe, deve essere dichiarata come open o public, ma ci sono differenze importanti:

  • open — il livello di accesso più aperto. Una classe con il modificatore open può essere ereditata e i suoi metodi possono essere sovrascritti sia all'interno che all'esterno del modulo.
  • public — la classe è accessibile al di fuori del modulo, ma l'ereditarietà e la sovrascrittura dei metodi sono possibili solo all'interno dello stesso modulo.

Pertanto, una classe open permette di estendere e modificare il comportamento in altri moduli, mentre una classe semplice (ad esempio, public) no.

Esempio:

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

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

// In un altro modulo, è possibile ereditare da OpenClass e sovrascrivere greet(),
// ma non da PublicClass.