📢 Nuovo Corso Bootstrap Completo disponibile!

Ereditarietà in C#

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.