Sobes.tech
Junior

Care este diferența dintre o clasă simplă și o clasă open în limbajul de programare Swift?

sobes.tech AI

Răspuns de la AI

O clasă simplă (fără modificator de acces) are, implicit, nivelul de acces intern (internal). Aceasta poate fi moștenită doar în cadrul aceluiași modul (țintă).

Clasa open are cel mai înalt nivel de acces și membrii săi (metode, proprietăți, subscripturi) pot fi suprascrise atât în cadrul aceluiași modul, cât și în alte module (framework-uri, biblioteci).

Modificator Moștenire în cadrul modulului Moștenire în afara modulului Suprascrierea membrilor în cadrul modulului Suprascrierea membrilor în afara modulului
internal (implicit) Da Nu Da Nu
open Da Da Da Da
// Exemplu de clasă simplă (internal implicit) ÎN CADRUL modulului A
class MyInternalClass {
    func internalMethod() {}
}

// Exemplu de clasă open ÎN CADRUL modulului A
open class MyOpenClass {
    open func openMethod() {}
}
// Utilizare ÎN CADRUL modulului A
class SubInternalClassInModuleA: MyInternalClass { // OK
    override func internalMethod() {}  // OK
}

class SubOpenClassInModuleA: MyOpenClass { // OK
    override func openMethod() {} // OK
}
// Utilizare ÎN AFARA modulului A (de exemplu, în modul B)
// eroare: nu se poate moșteni de la o clasă non-open 'MyInternalClass'
// class SubInternalClassInModuleB: MyInternalClass { }

class SubOpenClassInModuleB: MyOpenClass { // OK
    override func openMethod() {} // OK
}