Sobes.tech
Junior — Middle

Kādi konstruktoru tipi tiek īstenoti klasē un kā tie atšķiras?

sobes.tech AI

Atbilde no AI

Swift klases parasti tiek īsteno šādus konstruktoru (sākotnējo) tipus:

  1. Noklusējuma inicializators (default initializer) — tiek automātiski izveidots, ja visas īpašības ir ar noklusējuma vērtībām un nav citu inicializatoru.

  2. Ar parametriem (designated initializer) — galvenais inicializators, kas inicializē visas klases īpašības. Citu inicializatoru izsaukšana klasē notiek caur self.init.

  3. Ērti inicializatori (convenience initializer) — palīgini inicializatori, kas izsauc galveno inicializatoru. Tie tiek izmantoti, lai vienkāršotu objektu izveidi ar dažādiem parametru komplektiem.

Atšķirības:

  • Designated inicializatori inicializē visas īpašības un izsauc superklases inicializatorus.
  • Convenience inicializatori izsauc citus tā paša klases inicializatorus un tieši nevar inicializēt īpašības.

Piemērs:

class Person {
    var name: String
    var age: Int

    // Designated inicializators
    init(name: String, age: Int) {
        self.name = name
        self.age = age
    }

    // Convenience inicializators
    convenience init(name: String) {
        self.init(name: name, age: 0) // izsauc galveno
    }
}

Tādējādi, konstruktoru sniedz elastību, veidojot objektus ar dažādiem parametriem, un nodrošina pareizu visu īpašību inicializāciju.