Uno dei concetti fondamentali della programmazione tramite gli oggetti è quello dell’EREDITARIETA’, ovvero il sussistere di una relazione tra due classi grazie alle impostazioni del programmatore.
E’ opportuno dunque introdurre il concetto di classe: una classe non è altro che un modello per creare diversi oggetti, i quali insieme formano la classe stessa.
L’ereditarietà permette di estendere classi già esistenti aggiungendo di volta in volta oggetti, metodi e componenti.
Esempio: Supponiamo quindi di creare 3 classi (A,B,C), viene creata inizialmente la classe A, successivamente la classe B e infine la C; in questo caso si dice che la classe C eredita dalla classe B che eredita a sua volta dalla classe A. Le classi B e C sono in questo caso dette sottoclassi di A.
Nella programmazione l’ereditarietà è un concetto fondamentale soprattutto per lo sviluppo incrementale dei programmi; tale meccanismo ci permette di estendere e potenziare delle classi già esistenti.
Come nell’esempio fatto una classe può avere anche più sottoclassi, e quindi essere definita classe madre o super classe (classe A nell’esempio).
L’uso prolungato di questo meccanismo può portare alla creazione di una lunga gerarchia, di cui il modello più comune è quello detto albero.

Più si scende verso il basso nell’albero e più le classi saranno “specializzate”, all’inizio le classi risultano più “generali”.
Si parla quindi di:
– superclasse, ovvero la classe più generale
– sottoclasse: la nuova classe più specializzata composta da oggetti più ricchi
– si dice che la sottoclasse eredita dalla superclasse i membri preesistenti
– la sottoclasse invece estende la nuova classe con i nuovi membri
