Sobes.tech
Junior

Was ist der Unterschied zwischen einer einfachen Klasse und einer open Klasse in der Programmiersprache Swift?

sobes.tech KI

Antwort von AI

Eine einfache Klasse (ohne Zugriffsmodifikator) hat standardmäßig die interne (internal) Zugriffsebene. Sie kann nur innerhalb desselben Moduls (Ziel) vererbt werden.

Die open-Klasse hat die höchste Zugriffsebene und ihre Mitglieder (Methoden, Eigenschaften, Subscripts) können sowohl innerhalb desselben Moduls als auch in anderen Modulen (Frameworks, Bibliotheken) überschrieben werden.

Modifikator Vererbung innerhalb des Moduls Vererbung außerhalb des Moduls Überschreiben von Mitgliedern innerhalb des Moduls Überschreiben von Mitgliedern außerhalb des Moduls
internal (Standard) Ja Nein Ja Nein
open Ja Ja Ja Ja
// Beispiel einer einfachen Klasse (internal standardmäßig) INNERHALB des Moduls A
class MyInternalClass {
    func internalMethod() {}
}

// Beispiel einer open Klasse INNERHALB des Moduls A
open class MyOpenClass {
    open func openMethod() {}
}
// Verwendung INNERHALB des Moduls A
class SubInternalClassInModuleA: MyInternalClass { // OK
    override func internalMethod() {}  // OK
}

class SubOpenClassInModuleA: MyOpenClass { // OK
    override func openMethod() {} // OK
}
// Verwendung außerhalb des Moduls A (z.B. im Modul B)
// Fehler: Kann nicht von einer nicht-open Klasse 'MyInternalClass' erben
// class SubInternalClassInModuleB: MyInternalClass { }

class SubOpenClassInModuleB: MyOpenClass { // OK
    override func openMethod() {} // OK
}