Classi astratte come supertipi
implementazione parziale di un tipo
può avere variabili di istanza e uno o piú costruttori
i costruttori possono essere chiamati solo dalle sottoclassi per inizializzare la parte di rappresentazione della superclasse
può contenere metodi astratti (senza implementazione)
può contenere metodi regolari (implementati)
- questo evita di implementare piú volte i metodi quando la classe abbia piú sottoclassi e permette di dimostrare più facilmente la correttezza
- l’implementazione può utilizzare i metodi astratti
- la parte generica dell’implementazione è fornita dalla superclasse
- le sottoclassi forniscono i dettagli