Sobes.tech
Junior

Erzählen Sie über die Vererbungsreihe von Klassen in der Programmiersprache Swift.

sobes.tech KI

Antwort von AI

Klassen in Swift unterstützen einfache Vererbung. Jede Klasse erbt von einer Elternklasse und bildet eine Hierarchie. Die Vererbungskette beginnt mit einer Basisklasse, die von nichts erbt, und erstreckt sich nach unten durch die Kindklassen.

Eigenschaften der Vererbung:

  • Überschreiben (Overriding): Die Kindklasse kann die Implementierung von Methoden, Eigenschaften und Subscripts der Elternklasse überschreiben. Das Schlüsselwort override wird verwendet.
  • Verhindern von Überschreibungen (Preventing Overrides): Es ist möglich, die Überschreibung eines Members der Klasse zu verhindern, indem man es mit dem Schlüsselwort final kennzeichnet. Die gesamte Klasse kann als final deklariert werden.
  • Zugriff auf die Elternklasse: Die Kindklasse kann auf die implementierten Mitglieder der Elternklasse mit dem Schlüsselwort super zugreifen. Dies ist nützlich, um die Implementierung einer Elternmethode aufzurufen oder auf eine Elternproperty zuzugreifen.

Beispiel:

// Basisklasse
class Vehicle {
    var currentSpeed = 0.0

    func makeNoise() {
        // Leere Implementierung
    }
}

// Kindklasse, die von Vehicle erbt
class Car: Vehicle {
    var numberOfDoors = 4

    // Überschreiben der Methode makeNoise
    override func makeNoise() {
        print("Piept")
    }
}

// Kindklasse, die von Car erbt
class ElectricCar: Car {
    var batteryLevel = 100.0

    // Hinzufügen einer neuen Eigenschaft
    let isElectric = true

    // Überschreiben der Eigenschaft aus der Basisklasse
    override internal var currentSpeed: Double {
        didSet {
            if currentSpeed > 0 {
                print("Elektroauto ist in Bewegung")
            }
        }
    }
}

In diesem Beispiel:

  • Vehicle — Basisklasse.
  • Car erbt von Vehicle. Es fügt die Eigenschaft numberOfDoors hinzu und überschreibt die Methode makeNoise.
  • ElectricCar erbt von Car. Es fügt die Eigenschaft batteryLevel hinzu, die Konstante isElectric und überschreibt die Eigenschaft currentSpeed.

Verkettung der Vererbung: Vehicle -> Car -> ElectricCar. Jede Klasse in dieser Kette hat Zugriff auf alle öffentlichen (oder in anderem Kontext zugänglichen) Mitglieder der übergeordneten Klassen in der Hierarchie.