Junior
Koja je razlika između obične klase i open klase u programskom jeziku Swift?
sobes.tech АИ
Одговор од АИ
Jednostavna klasa (bez modifikatora pristupa) ima podrazumevani unutrašnji (internal) nivo pristupa. Može se naslediti samo unutar istog modula (cilja).
open klasa ima najviši nivo pristupa i njeni članovi (metode, svojstva, subskripti) mogu biti prepisani kako unutar istog modula, tako i u drugim modulima (framework-ovima, bibliotekama).
| Modifikator | Nasleđivanje unutar modula | Nasleđivanje van modula | Prepisivanje članova unutar modula | Prepisivanje članova van modula |
|---|---|---|---|---|
internal (podrazumevano) |
Da | Ne | Da | Ne |
open |
Da | Da | Da | Da |
// Primer jednostavne klase (internal po podrazumevanom) UNUTAR modula A
class MyInternalClass {
func internalMethod() {}
}
// Primer open klase UNUTAR modula A
open class MyOpenClass {
open func openMethod() {}
}
// Upotreba UNUTAR modula A
class SubInternalClassInModuleA: MyInternalClass { // OK
override func internalMethod() {} // OK
}
class SubOpenClassInModuleA: MyOpenClass { // OK
override func openMethod() {} // OK
}
// Upotreba IZVAN modula A (npr. u modulu B)
// greška: ne može se naslediti ne-open klasa 'MyInternalClass'
// class SubInternalClassInModuleB: MyInternalClass { }
class SubOpenClassInModuleB: MyOpenClass { // OK
override func openMethod() {} // OK
}