Avatar ·

Was bedeutet das Schlüsselwort `open` in Swift und wie unterscheidet es sich von `public`?

Hallo zusammen! Ich habe vor kurzem mit Swift angefangen und bin bei der Arbeit mit Zugriffsmodifikatoren auf Verwirrung gestoßen. In der Apple-Dokumentation steht, dass `open` die höchste Zugriffsebene ist, aber ich verstehe nicht ganz, worin der Unterschied zu `public` besteht. Ich schreibe eine kleine Bibliothek für die Netzwerkarbeit. Hier ist ein Beispiel meiner Klasse: ```swift public class NetworkManager { public func fetchData() { print("Fetching data...") } } ``` Alles funktioniert, aber ich habe gelesen, dass für Klassen, die aus einem anderen Modul vererbt werden können, `open` verwendet werden muss. Ich habe versucht, `public` durch `open` zu ersetzen: ```swift open class NetworkManager { open func fetchData() { print("Fetching data...") } } ``` Ich habe keinen Unterschied im Verhalten bemerkt. Bitte erklären Sie mir: 1. Was ist der tatsächliche Unterschied zwischen `open` und `public`? 2. Wann sollte man `open` verwenden und wann reicht `public`? 3. Warum hat Apple überhaupt das Schlüsselwort `open` eingeführt, wenn es `public` gibt? Ich wäre dankbar für eine