Sobes.tech
Junior

Kāda ir atšķirība starp vienkāršu klasi un open klasi Swift programmēšanas valodā?

sobes.tech AI

Atbilde no AI

Vienkārša klase (bez piekļuves modifikatora) pēc noklusējuma ir iekšējā (internal) piekļuves līmenī. To var manto tikai tajā pašā modulī (mērķī).

open klase ir visaugstākā piekļuves līmeņa, un tās locekļi (metodes, īpašības, subskripti) var tikt pārrakstīti gan tajā pašā modulī, gan citos modulos (frameworkos, bibliotēkās).

Modifikators Mantošana modulī Mantošana ārpus modulis Locekļu pārrakstīšana modulī Locekļu pārrakstīšana ārpus modulis
internal (noklusējums)
open
// Vienkāršas klases piemērs (internal pēc noklusējuma) MODULĀ A
class MyInternalClass {
    func internalMethod() {}
}

// `open` klases piemērs MODULĀ A
open class MyOpenClass {
    open func openMethod() {}
}
// Izmantošana MODULĀ A
class SubInternalClassInModuleA: MyInternalClass { // OK
    override func internalMethod() {}  // OK
}

class SubOpenClassInModuleA: MyOpenClass { // OK
    override func openMethod() {} // OK
}
// Izmantošana ārpus modulis A (piem., B modulī)
// kļūda: nevar manto no ne-open klases 'MyInternalClass'
// class SubInternalClassInModuleB: MyInternalClass { }

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