Sobes.tech
Junior

Swift proqramlaşdırma dilində sinif irsiyyət zəncirindən danışın.

sobes.tech Süni İntellekt

AI-dan cavab

Swift-də sinflər tək irsiyyəti dəstəkləyir. Hər sinf valideyn sinifindən irs götürür və irs zənciri əsas sinifdən başlayır, heç nədən irs almayan və aşağıya doğru uşaq sinflər vasitəsilə genişlənir.

İrsiyyətin xüsusiyyətləri:

  • Yenidən yazma (Overriding): Uşaq sinfi valideyn sinfinin metodlarının, xüsusiyyətlərinin və subskriptlərinin tətbiqini yenidən yaza bilər. override açar sözü istifadə olunur.
  • Yenidən yazmanı qarşısını alma (Preventing Overrides): Bir sinif üzvünün yenidən yazılmasını final açar sözü ilə işarələyərək qarşısını almaq mümkündür. Bütün sinfi final kimi elan etmək olar.
  • Valideyn sinfə giriş: Uşaq sinfi super açar sözü ilə valideyn sinfinin həyata keçirilmiş üzvlərinə daxil ola bilər. Bu, valideyn metodunun həyata keçirilməsini çağırmaq və ya valideyn xüsusiyyətinə daxil olmaq üçün faydalıdır.

Nümunə:

// Əsas sinif
class Vehicle {
    var currentSpeed = 0.0

    func makeNoise() {
        // Boş həyata keçirmə
    }
}

// Vehicle-dan irs alan uşaq sinif
class Car: Vehicle {
    var numberOfDoors = 4

    // makeNoise metodunun yenidən yazılması
    override func makeNoise() {
        print("Beep beep")
    }
}

// Car-dan irs alan uşaq sinif
class ElectricCar: Car {
    var batteryLevel = 100.0

    // Yeni xüsusiyyət əlavə etmək
    let isElectric = true

    // Əsas sinifin xüsusiyyətinin yenidən yazılması
    override internal var currentSpeed: Double {
        didSet {
            if currentSpeed > 0 {
                print("Elektrik avtomobili hərəkətdədir")
            }
        }
    }
}

Bu nümunədə:

  • Vehicle — əsas sinif.
  • Car Vehicle-dən irs alır. numberOfDoors xüsusiyyətini əlavə edir və makeNoise metodunu yenidən yazar.
  • ElectricCar Car-dən irs alır. batteryLevel xüsusiyyətini əlavə edir, isElectric sabitini və currentSpeed xüsusiyyətini yenidən yazar.

İrsiyyət zənciri: Vehicle -> Car -> ElectricCar. Bu zəncirdəki hər bir sinf, yuxarıda yerləşən sinflərin bütün açıq (və ya başqa kontekstdə əlçatan) üzvlərinə giriş əldə edə bilər.