Sobes.tech
Junior — Middle

Worin besteht der Unterschied zwischen einer Klassenanweisung mit dem Schlüsselwort open und einer normalen Klassenbeschreibung ohne diesen Modifikator?

sobes.tech KI

Antwort von AI

In der Programmiersprache Swift sind standardmäßig alle Klassen für die Vererbung geschlossen (final). Das bedeutet, dass ohne den Modifikator open oder public eine Klasse außerhalb des Moduls, in dem sie deklariert wurde, nicht vererbt werden kann.

  • Eine Klasse, die mit dem Schlüsselwort open deklariert ist, kann in jedem anderen Modul (z.B. in einem anderen Framework oder einer Anwendung) vererbt und überschrieben werden.
  • Eine Klasse ohne den Modifikator open (meist public oder ohne Modifikator) kann außerhalb des aktuellen Moduls nicht vererbt werden.

Daher ist open die "offenste" Zugriffsebene für Klassen und ihre Methoden, die es ermöglicht, die Funktionalität in anderen Modulen zu erweitern.

Beispiel:

open class OpenClass {
    open func doSomething() {}
}

public class PublicClass {
    public func doSomething() {}
}

// Vererbung von OpenClass aus einem anderen Modul ist möglich
// Vererbung von PublicClass aus einem anderen Modul ist nicht möglich