Sobes.tech
Junior

Ispričajte o lancu nasleđivanja klasa u programskom jeziku Swift.

sobes.tech АИ

Одговор од АИ

Klase u Swift podržavaju jednostavno nasleđivanje. Svaka klasa nasleđuje od roditeljske klase, formirajući hijerarhiju. Lanac nasleđivanja počinje sa osnovnom klasom koja ne nasleđuje od ničega, i širi se naniže kroz podklase.

Svojstva nasleđivanja:

  • Prepisivanje (Overriding): Podklasa može prepisati implementaciju metoda, svojstava i podskripti roditeljske klase. Koristi se ključna reč override.
  • Sprječavanje prepisivanja (Preventing Overrides): Može se sprečiti prepisivanje člana klase označavanjem sa ključnom rečju final. Celokupna klasa može biti deklarisana kao final.
  • Pristup roditeljskoj klasi: Podklasa može pristupiti implementiranim članovima roditeljske klase pomoću ključne reči super. Ovo je korisno za pozivanje implementacije roditeljske metode ili pristup roditeljskoj svojstvu.

Primer:

// Osnovna klasa
class Vehicle {
    var currentSpeed = 0.0

    func makeNoise() {
        // Prazna implementacija
    }
}

// Podklasa koja nasleđuje od Vehicle
class Car: Vehicle {
    var numberOfDoors = 4

    // Prepisivanje metode makeNoise
    override func makeNoise() {
        print("Bip bip")
    }
}

// Podklasa koja nasleđuje od Car
class ElectricCar: Car {
    var batteryLevel = 100.0

    // Dodavanje nove svojstva
    let isElectric = true

    // Prepisivanje svojstva iz roditeljske klase
    override internal var currentSpeed: Double {
        didSet {
            if currentSpeed > 0 {
                print("Električni auto se kreće")
            }
        }
    }
}

U ovom primeru:

  • Vehicle — osnovna klasa.
  • Car nasleđuje od Vehicle. Dodaje svojstvo numberOfDoors i prepisuje metodu makeNoise.
  • ElectricCar nasleđuje od Car. Dodaje svojstvo batteryLevel, konstantu isElectric i prepisuje svojstvo currentSpeed.

Lanac nasleđivanja: Vehicle -> Car -> ElectricCar. Svaka klasa u ovom lancu ima pristup svim javnim (ili dostupnim u drugom kontekstu) članovima viših klasa u hijerarhiji.