Junior
Mi a különbség az egyszerű osztály és az open osztály között a Swift programozási nyelvben?
sobes.tech MI
Válasz az MI-től
Egyszerű osztály (hozzáférési módosító nélkül) alapértelmezés szerint belső (internal) hozzáférési szinttel rendelkezik. Csak ugyanazon a modulon belül (célon) örökölhető.
Az open osztálynak a legmagasabb hozzáférési szintje van, és tagjai (módszerek, tulajdonságok, alárendelt szkriptek) ugyanazon a modulon belül és más modulokban (keretrendszerek, könyvtárak) is felülírhatók.
| Módosító | Öröklődés a modulon belül | Öröklődés a modulon kívül | Tagok felülírása a modulon belül | Tagok felülírása a modulon kívül |
|---|---|---|---|---|
internal (alapértelmezett) |
Igen | Nem | Igen | Nem |
open |
Igen | Igen | Igen | Igen |
// Egyszerű osztály példája (internal alapértelmezett) A modul A-n belül
class MyInternalClass {
func internalMethod() {}
}
// open osztály példája A modul A-n belül
open class MyOpenClass {
open func openMethod() {}
}
// Használat A modul A-n belül
class SubInternalClassInModuleA: MyInternalClass { // OK
override func internalMethod() {} // OK
}
class SubOpenClassInModuleA: MyOpenClass { // OK
override func openMethod() {} // OK
}
// Használat A modul A-n kívül (például B modulban)
// hiba: nem örökölhető nem-open osztályból 'MyInternalClass'
// class SubInternalClassInModuleB: MyInternalClass { }
class SubOpenClassInModuleB: MyOpenClass { // OK
override func openMethod() {} // OK
}