l'ereditarietà tra le classi di indica con il segno :

sintassi: creazione classe derivata
modificatore_accesso class NOME_CLASSE_DERIVATA : NOME_CLASSE_BASE
{

....;
}

la classe derivata avrà ereditato:

esempio: classe base Persona → classe derivata Studente

  • costruzione
  • public class Persona classe base
    {
    string mNome; variabile non visibile dalla derivata perché private
    protected string mCognome; variabile visibile dalla derivata perché protected

    public Persona(string Nome, string Cognome) costruttore base
    {
    mNome = Nome;
    mCognome = Cognome;
    }

    public string Nome proprietà classe base perché Nome é private
    {
    get { return mNome; }
    set { mNome = value; }
    }

    ...;
    }

    public class Studente : Persona classe derivata
    {
    private int mMatricola;

    public Studente(string Nome, string Cognome, int Matricola) : base(Nome, Cognome) costruttore derivato
    si può in caso di necessità imporre una variabile dei parametri della classe base costante,
    ex: : base("Pippo", Cognome) → Nome = "Pippo" per tutti gli studenti

    {
    mMatricola = Matricola;
    }

    public int Matricola proprietà derivata (+ quella base ereditata)
    {
    get { return mMatricola; }
    set { mMatricola = value; }
    }
    }

  • dichiarazione
  • Studente stud = new Studente("Marco", "", 0); creo oggetto Studente
    stud.Matricola = 232440; Corretto: Matricola è una proprietà della classe Studente
    stud.Cognome = "Minerva"; Corretto: Cognome è una proprietà ereditata da Persona


    Persona pers = new Persona("Marco", ""); creo oggetto Persona
    pers.Cognome = "Minerva"; Corretto: Cognome è una proprietà della classe Persona
    pers.Matricola = 232440; Errato: la proprietà Matricola non è visibile da Persona


    conseguenze e caratteristiche: