Junior
Nyilvános vagy privát az open osztály?
sobes.tech MI
Válasz az MI-től
Az open osztály nyilvános. A különbség a sima public-hoz képest az, hogy az open-ként deklarált osztályok és osztálytagok örökölhetők és felülírhatók azon túl, ahol definiálták őket. A public osztályok elérhetők a modulon kívül, de nem örökölhetők vagy írhatók felül, kivéve, ha open-ként vannak megjelölve.
Swiftben az elérési szintek:
open: A legmagasabb elérési szint. Bármely modulból elérhető, örökölhető és felülírható.public: Bármely modulból elérhető, de nem örökölhető vagy felülírható a modulon kívül.internal: Alapértelmezett elérési szint. Csak egy modulon belül elérhető.fileprivate: Csak az adott fájlon belül elérhető.private: A legalacsonyabb elérési szint. Csak az adott deklarációban elérhető, ahol definiálták.
Példa:
// `open` osztály deklarálása ModulesA.swift-ben
open class OpenClass {
open func openMethod() {
print("Ez egy open metódus.")
}
}
// Használat a ModulesB.swift-ben (más modul)
import ModulesA
class MyClass: OpenClass { // Öröklés engedélyezett
override func openMethod() { // Felülírás engedélyezett
super.openMethod()
print("Ez egy felülírt open metódus.")
}
}
// `public` osztály deklarálása ModulesA.swift-ben
public class PublicClass {
public func publicMethod() {
print("Ez egy nyilvános metódus.")
}
}
// Használat a ModulesB.swift-ben (más modul)
import ModulesA
let instance = PublicClass()
instance.publicMethod() // Használat engedélyezett
// class MyOtherClass: PublicClass { // HIBA: A nyilvános osztályt nem lehet alosztályozni a modulján kívül
// override func publicMethod() { // HIBA: A nyilvános metódus nem írható felül a modulján kívül
// super.publicMethod()
// }
// }