Sobes.tech
Junior

Meséljen a Swift programozási nyelvben az osztályok öröklődési láncáról.

sobes.tech MI

Válasz az MI-től

A Swift osztályok támogatják az egyszerű öröklődést. Minden osztály egy szülőosztálytól örököl, így hierarchia alakul ki. Az öröklési lánc egy alap osztállyal kezdődik, amely nem örököl semmiből, és lefelé haladva az alosztályokon keresztül bővül.

Az öröklés tulajdonságai:

  • Felülírás (Overriding): Az alosztály felülírhatja a szülőosztály módszereit, tulajdonságait és szubscriptjeit. A override kulcsszót használjuk.
  • Felülírás megakadályozása (Preventing Overrides): Megakadályozhatjuk egy tag felülírását a final kulcsszóval. Az egész osztályt final-ként lehet deklarálni.
  • Hozzáférés a szülőosztályhoz: Az alosztály a super kulcsszóval hozzáférhet a szülőosztály megvalósított tagjaihoz. Ez hasznos a szülő módszerének hívásához vagy a szülő tulajdonságának eléréséhez.

Példa:

// Alap osztály
class Vehicle {
    var currentSpeed = 0.0

    func makeNoise() {
        // Üres megvalósítás
    }
}

// A Vehicle-ből öröklődő osztály
class Car: Vehicle {
    var numberOfDoors = 4

    // A makeNoise metódus felülírása
    override func makeNoise() {
        print("Beep beep")
    }
}

// A Car-ból öröklődő osztály
class ElectricCar: Car {
    var batteryLevel = 100.0

    // Új tulajdonság hozzáadása
    let isElectric = true

    // A szülőosztály tulajdonságának felülírása
    override internal var currentSpeed: Double {
        didSet {
            if currentSpeed > 0 {
                print("Az elektromos autó mozog")
            }
        }
    }
}

Ebben a példában:

  • Vehicle — alap osztály.
  • Car öröklődik a Vehicle-től. Hozzáadja a numberOfDoors tulajdonságot és felülírja a makeNoise metódust.
  • ElectricCar öröklődik a Car-től. Hozzáadja a batteryLevel tulajdonságot, a isElectric állandót és felülírja a currentSpeed tulajdonságot.

Az öröklési lánc: Vehicle -> Car -> ElectricCar. Minden osztály ebben a láncban hozzáférhet a felsőbb szinteken lévő osztályok összes nyilvános (vagy más kontextusban elérhető) tagjához.