Kokie konstruktorių tipai įgyvendinami klasėje ir kuo jie skiriasi?
sobes.tech AI
Atsakymas iš AI
Swift klasėje paprastai įgyvendinami šie konstruktorių (pradinių) tipai:
-
Numatytasis inicializatorius (default initializer) — automatiškai sukuriamas, jei visi savybės turi numatytąsias reikšmes ir nėra kitų inicializatorių.
-
Su parametrais (designated initializer) — pagrindinis inicializatorius, kuris inicializuoja visas klasės savybes. Kito inicializatoriaus kvietimas klasėje vyksta per
self.init. -
Patogūs inicializatoriai (convenience initializer) — pagalbiniai inicializatoriai, kurie kviečia pagrindinį inicializatorių. Jie naudojami norint supaprastinti objektų kūrimą su skirtingais parametrų rinkiniais.
Skirtumai:
- Designated inicializatoriai inicializuoja visas savybes ir kviečia superklasės inicializatorius.
- Convenience inicializatoriai kviečia kitus tos pačios klasės inicializatorius ir tiesiogiai savybių inicializuoti negali.
Pavyzdys:
class Person {
var name: String
var age: Int
// Designated inicializatorius
init(name: String, age: Int) {
self.name = name
self.age = age
}
// Convenience inicializatorius
convenience init(name: String) {
self.init(name: name, age: 0) // kviečia pagrindinį
}
}
Šiuo būdu konstruktoriai suteikia lankstumą kurti objektus su skirtingais parametrais ir užtikrina teisingą visų savybių inicializaciją.