Rapido | Ereditarietà e sostituzione

Jan 06 2023
Ciao a tutti! In questo articolo parlerò dell'ereditarietà in Swift. Se vuoi supportarmi, ci sono tre semplici passaggi: applaudi, condividi e seguimi, grazie in anticipo! Come al solito, la mia tipica domanda; hai letto i miei articoli precedenti? In caso contrario, eccoli qui: ereditare significa letteralmente ereditare.

Ciao a tutti!

In questo articolo parlerò dell'ereditarietà in Swift.

Se vuoi supportarmi, ci sono tre semplici passaggi: applaudi, condividi e seguimi, grazie in anticipo!

Come al solito, la mia tipica domanda; hai letto i miei articoli precedenti? In caso contrario, eccoli qui:

Ereditare significa letteralmente ereditare. Nei linguaggi di programmazione orientati agli oggetti, ereditarietà significa produrre un'altra classe con le stesse proprietà da una classe. Tre punti importanti:

  1. Quando una classe eredita da un'altra, la classe che eredita è nota come sottoclasse.
  2. La classe da cui eredita è conosciuta come la sua superclasse .
  3. Qualsiasi classe che non eredita da un'altra classe è nota come classe base .

Override

Le sottoclassi hanno tutte le caratteristiche delle superclassi da cui derivano. Tutte le proprietà di proprietà, metodo ecc. della superclasse sono disponibili anche nella sottoclasse. In alcuni casi, potrebbe essere necessario modificare una proprietà di una sottoclasse e renderla speciale per la sottoclasse. Tali situazioni sono chiamate override. Se esaminiamo l'esempio seguente, il metodo defineTheVehicle della classe Vehicle viene sovrascritto nella classe Train. Ora il metodo defineTheVehicle della classe Train è come è scritto nella classe Train. Questa sostituzione non influisce sul metodo della classe Veicolo ( superclasse ).

Accesso a proprietà, metodi e script secondari di Super Class

Usiamo "super" per definirlo:
per metodi: super.method()
per proprietà: super.someProperty
per sub-script: super[someIndex].

Qui la parola super si riferisce alla superclasse.

Come evitare l'override

Se definiamo una variabile, una funzione, una classe e così via con la parola "finale" , ciò significa che ne impediamo l'override.

Esempio:

final var
final func { }
final class { }

static func {} //Cannot be overriden

final class func {} //Cannot be overriden

class func {} //Can be overriden

Esempi di codice

In questa parte vedrai esempi di codice relativi all'argomento di questo articolo.

class Vehicle {
    
    // Properties, we define them as variable because they will change
    var numberOfWheels: Int
    var maxPassenger: Int
    
    // Method
    func defineTheVehicle() -> String {
        return "It has \(numberOfWheels) wheels; Can take maximum \(maxPassenger) number of passengers."
    }
    
    // Initializer
    init() {
        numberOfWheels = 0
        maxPassenger = 1
    }
}

//The class of Motorcycle is subclass of the (super)class Vehicle.
class Motorcycle: Vehicle {
    init() {
        //We call our init from our superclass (Vehicle)
        super.init()
        numberOfWheels = 2
    }
}

//The class of Train is subclass of the (super)class Vehicle.
class Train: Vehicle {
    var speed: Double = 0.0
    init() {
        //We call our init from our superclass (Vehicle)
        super.init()
        maxPassenger = 200 //random number :D
        numberOfWheels = 20 //random number :D
    }
    //Here we override the defineTheVehicle function.
    override func defineTheVehicle() -> String {
        return super.defineTheVehicle() + "; "
            + "\(speed) km/h"
    }
}

Fondamentalmente è tutto da parte mia. Spero che questo articolo ti abbia aiutato un po '. Se ti piacciono i miei articoli, se pensi che siano utili, puoi cliccare sul pulsante “Segui” e condividere gli articoli per raggiungere più persone. :)

Vuoi sostenermi? Hai un paio di opzioni: applaudi, commenta, condividi, segui o offrimi un caffè .

Non dimenticare di seguirci su Twitter .