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
}