Sobes.tech
Junior

Aký je rozdiel medzi jednoduchou triedou a open triedou v Swift?

sobes.tech AI

Odpoveď od AI

V Swiftu sú všetky triedy predvolene označené ako final — nemôžu byť dediť. Aby mohla byť trieda dediť, musí byť deklarovaná ako open alebo public, ale medzi nimi existujú dôležité rozdiely:

  • open — najotvorenejšia úroveň prístupu. Trieda s modifikátorom open môže byť dediť a jej metódy môžu byť prepísané ako vnútri, tak aj mimo modulu.
  • public — trieda je dostupná na používanie mimo modulu, ale dediť a prepísať metódy je možné iba v rámci toho istého modulu.

Takže, open trieda umožňuje rozširovanie a zmenu správania v iných moduloch, zatiaľ čo jednoduchá (napríklad public) — nie.

Príklad:

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

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

// V inom module je možné dediť od OpenClass a prepísať greet(),
// ale nie od PublicClass.