Talvolta, può essere necessario creare un tipo di dato non inteso per essere istanziato, ma da essere utilizzato nel meccanismo di ereditarietà come classe base per fornire un’interfaccia pubblica alle altre classi. Tali classi sono dette astratte, a differenza delle classi che possiamo utilizzare per istanziare degli oggetti, dette concrete.

Le classi astratte non possono, come detto, istanziare oggetti, perchè risultano incomplete. Spetterà alle classi derivate definire le parti mancanti.
Dal punto di vista logico, una classe astratta è troppo generica per essere utilizzata direttamente. Il classico esempio è quello della classe Shape, da cui derivano, ad esempio, le classi Square e Triangle.
Disegnare uno Shape ci risulta impossibile. E’ necessario definire tale funzionalità, compito che spetta alle classi derivate.

Continua >