Junior
Mis vahe on lihtsa klassi ja open klassi vahel Swift programmeerimiskeeles?
sobes.tech AI
Vastus AI-lt
Lihtne klass (ilma juurdepääsukorraldaja) on vaikimisi sisemine (internal) juurdepääsukorruse tase. Seda saab pärida ainult sama mooduli (sihtmärgi) piires.
open klassil on kõrgeim juurdepääsukorruse tase ning selle liikmed (meetodid, omadused, subskriptid) võivad olla üle kirjutatud nii sama mooduli sees kui ka teistes moodulites (raamistikud, teegid).
| Modifikator | Pärimine moodulis | Pärimine väljaspool moodulit | Liikmete üle kirjutamine moodulis | Liikmete üle kirjutamine väljaspool moodulit |
|---|---|---|---|---|
internal (vaikimisi) |
Jah | Ei | Jah | Ei |
open |
Jah | Jah | Jah | Jah |
// Näide lihtsast klassist (internal vaikimisi) MOODULIS A
class MyInternalClass {
func internalMethod() {}
}
// `open` klassi näide MOODULIS A
open class MyOpenClass {
open func openMethod() {}
}
// Kasutamine MOODULIS A
class SubInternalClassInModuleA: MyInternalClass { // OK
override func internalMethod() {} // OK
}
class SubOpenClassInModuleA: MyOpenClass { // OK
override func openMethod() {} // OK
}
// Kasutamine väljaspool moodulit A (näiteks moodulis B)
// viga: ei saa pärida mitte-open klassist 'MyInternalClass'
// class SubInternalClassInModuleB: MyInternalClass { }
class SubOpenClassInModuleB: MyOpenClass { // OK
override func openMethod() {} // OK
}