Sobes.tech
Junior

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

sobes.tech KI

Antwort von AI

In Swift sind standardmäßig alle Klassen final — sie können nicht vererbt werden. Damit eine Klasse vererbt werden kann, muss sie als open oder public deklariert werden, wobei es wichtige Unterschiede gibt:

  • open — der offenste Zugriff. Eine Klasse mit dem Modifikator open kann vererbt und ihre Methoden sowohl innerhalb als auch außerhalb des Moduls überschrieben werden.
  • public — die Klasse ist außerhalb des Moduls zugänglich, aber Vererbung und Überschreiben von Methoden sind nur innerhalb desselben Moduls möglich.

Daher erlaubt eine open Klasse die Erweiterung und Änderung des Verhaltens in anderen Modulen, während eine einfache Klasse (z.B. public) dies nicht tut.

Beispiel:

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

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

// In einem anderen Modul kann man von OpenClass erben und greet() überschreiben,
// aber nicht von PublicClass.