Sobes.tech
Middle

Konvensiyalar və təyin edilmiş arasında fərq nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Rahətsiz başlatıcılar ikincildir, onlar yalnızca eyni sinifdəki digər başlatıcıları çağırabilir və sonunda designated başlatıcıya yönəldirlər. Onlar nümunələrin yaradılmasının rahat yollarını əlavə etmək üçün istifadə olunur.

designated başlatıcılar əsasdır, onlar sinfin bütün saxlanılan xüsusiyyətlərinin tam başlanmasını təmin edir (öz və valideyn siniflərinin). Onlar valideyn sinfinin designated başlatıcılarını çağıra bilərlər. Hər sinif ən azı bir designated başlatıcıya malik olmalıdır.

class BaseClass {
    var baseProperty: String

    init(baseProperty: String) { // Designated başlatıcı
        self.baseProperty = baseProperty
    }
}

class DerivedClass: BaseClass {
    var derivedProperty: Int

    init(baseProperty: String, derivedProperty: Int) { // Designated başlatıcı
        self.derivedProperty = derivedProperty
        super.init(baseProperty: baseProperty) // Valideynin designated başlatıcını çağır
    }

    convenience init(baseProperty: String) { // Rahətsiz başlatıcı
        self.init(baseProperty: baseProperty, derivedProperty: 0) // Öz designated başlatıcıya yönəldir
    }

    convenience init() { // Rahətsiz başlatıcı
        self.init(baseProperty: "Default Base", derivedProperty: -1) // Öz designated başlatıcıya yönəldir
    }
}