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 { }