Junior
Mi a különbség az open és a public között?
sobes.tech MI
Válasz az MI-től
Az open lehetővé teszi a tagok öröklését és felülírását bármely modulban, míg a public lehetővé teszi a tagok használatát bármely modulban, de az öröklés és felülírás csak ugyanazon modul keretein belül engedélyezett, ahol a tag deklarálva van.
| Jellemző | open |
public |
|---|---|---|
| Hozzáférés | Bármely modul | Bármely modul |
| Öröklés | Bármely modul | Csak saját modulban |
| Felülírás | Bármely modul | Csak saját modulban |
Példa:
// 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() {
// Lehetséges Modul B-ben
}
// Hiba: a publicMethod használható, de nem írható felül Modul A-n kívül
// override func publicMethod() { }
}
// Hiba: a PublicClass nem engedélyezi az öröklést Modul A-n kívül
// class SubclassOfPublic: PublicClass { }