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 modificatoreopenpuò 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.