Sobes.tech
Junior

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

sobes.tech AI

Atbilde no AI

Swift noklusversijā visas klases pēc noklusējuma ir final — tās nevar manto. Lai klase būtu mantoša, to jādeklarē kā open vai public, bet starp tām ir svarīgas atšķirības:

  • open — visatvērtākais piekļuves līmenis. Klase ar modifikatoru open var tikt mantojama un tās metodes var tikt pārrakstītas gan iekšā, gan ārā no moduļa.
  • public — klase ir pieejama ārpus moduļa, bet mantošana un metožu pārrakstīšana ir iespējama tikai tajā pašā modulī.

Tādējādi, open klase ļauj paplašināt un mainīt uzvedību citos moduļos, kamēr vienkārša (piemēram, public) — nē.

Piemērs:

open class OpenClass {
    open func greet() {
        print("Hello from OpenClass")
    }
}

public class PublicClass {
    public func greet() {
        print("Hello from PublicClass")
    }
}

// Citā modulī ir iespējams manto no OpenClass un pārrakstīt greet(),
// bet ne no PublicClass.