Sobes.tech
Junior

Parla della catena di ereditarietà delle classi nel linguaggio di programmazione Swift.

sobes.tech AI

Risposta dell'AI

Le classi in Swift supportano l'ereditarietà semplice. Ogni classe eredita da una classe genitore, formando una gerarchia. La catena di ereditarietà inizia con una classe base, che non eredita da nulla, e si estende verso il basso attraverso le classi figlie.

Proprietà dell'ereditarietà:

  • Override (Sovrascrittura): La classe figlia può sovrascrivere l'implementazione di metodi, proprietà e subscript della classe genitore. Si utilizza la parola chiave override.
  • Prevenire le sovrascritture (Preventing Overrides): È possibile impedire la sovrascrittura di un membro della classe contrassegnandolo con la parola chiave final. L'intera classe può essere dichiarata come final.
  • Accesso alla classe genitore: La classe figlia può accedere ai membri implementati della classe genitore usando la parola chiave super. Questo è utile per chiamare l'implementazione di un metodo della classe genitore o accedere a una proprietà del genitore.

Esempio:

// Classe di base
class Vehicle {
    var currentSpeed = 0.0

    func makeNoise() {
        // Implementazione vuota
    }
}

// Classe figlia che eredita da Vehicle
class Car: Vehicle {
    var numberOfDoors = 4

    // Sovrascrittura del metodo makeNoise
    override func makeNoise() {
        print("Beep beep")
    }
}

// Classe figlia che eredita da Car
class ElectricCar: Car {
    var batteryLevel = 100.0

    // Aggiunta di una nuova proprietà
    let isElectric = true

    // Sovrascrittura della proprietà della classe base
    override internal var currentSpeed: Double {
        didSet {
            if currentSpeed > 0 {
                print("L'auto elettrica si muove")
            }
        }
    }
}

In questo esempio:

  • Vehicle — classe base.
  • Car eredita da Vehicle. Aggiunge la proprietà numberOfDoors e sovrascrive il metodo makeNoise.
  • ElectricCar eredita da Car. Aggiunge la proprietà batteryLevel, la costante isElectric e sovrascrive la proprietà currentSpeed.

Catena di ereditarietà: Vehicle -> Car -> ElectricCar. Ogni classe in questa catena ha accesso a tutti i membri pubblici (o accessibili in altri contesti) delle classi superiori nella gerarchia.