🚀 Nuova versione beta disponibile! Feedback o problemi? Contattaci

Ereditarietà in C#

Codegrind Team•Jul 22 2023

L’ereditarietà è un concetto fondamentale nella programmazione orientata agli oggetti (OOP) che consente di definire nuove classi basate su classi esistenti. La classe derivata (sottoclasse) eredita le proprietà e i metodi della classe di base (superclasse). In questa lezione, esploreremo in dettaglio come funziona l’ereditarietà in C#, come definire e utilizzare classi derivate e come sfruttare i vantaggi dell’ereditarietà nella progettazione del software.

Concetto di Ereditarietà

L’ereditarietà permette di creare una gerarchia di classi in cui una classe più generale (superclasse) può essere estesa da una o più classi più specifiche (sottoclassi). Le sottoclassi ereditano le caratteristiche della superclasse, come campi, proprietà e metodi, consentendo la condivisione di funzionalità comuni.

Definizione di una Classe Derivata

Per definire una classe derivata, utilizziamo la sintassi class NomeSottoclasse : NomeSuperclasse.

Esempio di Definizione di una Classe Derivata:

class Veicolo
{
    public string Marca { get; set; }
    public void Avvia()
    {
        Console.WriteLine("Veicolo avviato.");
    }
}

class Automobile : Veicolo
{
    public int NumeroPorte { get; set; }
}

Nell’esempio sopra, Automobile è una classe derivata da Veicolo.

Utilizzo delle Proprietà e Metodi

Una classe derivata eredita tutte le proprietà e i metodi pubblici o protetti della classe di base.

Esempio di Utilizzo:

Automobile auto = new Automobile();
auto.Marca = "Toyota";
auto.Avvia();

Override dei Metodi

È possibile sovrascrivere un metodo della superclasse nella sottoclasse utilizzando la parola chiave override.

Esempio di Override di un Metodo:

class Automobile : Veicolo
{
    public int NumeroPorte { get; set; }

    public override void Avvia()
    {
        Console.WriteLine("Automobile avviata.");
    }
}

Costruttori nella Classe Derivata

Una classe derivata può chiamare il costruttore della superclasse utilizzando la sintassi base().

Esempio di Costruttori:

class Veicolo
{
    public Veicolo(string marca)
    {
        Marca = marca;
    }
}

class Automobile : Veicolo
{
    public Automobile(string marca, int porte) : base(marca)
    {
        NumeroPorte = porte;
    }
}

Vantaggi dell’Ereditarietà

L’ereditarietà favorisce la riusabilità del codice, consentendo di definire nuove classi basate su classi esistenti. Questo approccio riduce la duplicazione del codice e semplifica la manutenzione. Inoltre, l’ereditarietà favorisce la struttura gerarchica, che rende il codice più organizzato e comprensibile.

Conclusione

L’ereditarietà è uno dei pilastri della programmazione orientata agli oggetti, consentendo la creazione di classi derivate che ereditano proprietà e metodi dalla classe di base. Questo concetto promuove la riusabilità del codice, semplifica la manutenzione e aiuta a strutturare il codice in modo gerarchico. Utilizzando l’ereditarietà in modo oculato, è possibile progettare sistemi software più flessibili ed estendibili.