Sobes.tech
Junior

Was ist der Unterschied zwischen open und public?

sobes.tech KI

Antwort von AI

open erlaubt das Erben und Überschreiben von Mitgliedern in jedem Modul, während public die Verwendung von Mitgliedern in jedem Modul erlaubt, aber Vererbung und Überschreiben nur innerhalb desselben Moduls, in dem das Mitglied deklariert ist, erlaubt.

Merkmal open public
Zugriff Jedes Modul Jedes Modul
Vererbung Jedes Modul Nur im eigenen Modul
Überschreiben Jedes Modul Nur im eigenen Modul

Beispiel:

// Modul A
open class OpenClass {
    open func openMethod() { }
    public func publicMethod() { }
}

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

// Modul B
import ModuleA

class SubclassOfOpen: OpenClass {
    override func openMethod() {
        // Möglich in Modul B
    }

    // Fehler: publicMethod ist erlaubt zu verwenden, aber nicht außerhalb von Modul A zu überschreiben
    // override func publicMethod() { }
}

// Fehler: PublicClass erlaubt keine Vererbung außerhalb von Modul A
// class SubclassOfPublic: PublicClass { }