Sobes.tech
Junior

Koja je razlika između jednostavne klase i open klase u Swift-u?

sobes.tech АИ

Одговор од АИ

U Swift-u, podrazumevano, sve klase su final — ne mogu se naslediti. Da bi klasa bila naslediva, mora biti deklarisana kao open ili public, ali između njih postoje važne razlike:

  • open — najotvoreniji nivo pristupa. Klasa sa modifikatorom open može biti nasledjena i njene metode mogu biti prepisane kako unutar, tako i izvan modula.
  • public — klasa je dostupna za korišćenje izvan modula, ali nasledjivanje i prepisivanje metoda je moguće samo unutar istog modula.

Tako, open klasa omogućava proširenje i promenu ponašanja u drugim modulima, dok obična (npr. public) — ne.

Primer:

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

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

// U drugom modulu, može se naslediti od OpenClass i prepisati greet(),
// ali ne i od PublicClass.