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átoromopenmôž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.