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
}