Sobes.tech
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
}