È una parte del codice sorgente che fornisce un prototipo astratto per gli oggetti di un particolare tipo (ogni oggetto è un’istanza di una classe). è identificata dai membri di classe, cioè sia dai suoi campi (stati degli oggetti) che dai suoi metodi (comportamenti che essa possiede).
N.B.: Si vuole evitare di ricreare nuove classi di oggetti quando esse hanno funzionalità simili. In questo caso si realizza una superclasse da cui le altre classi ereditano i metodi comuni tra loro.
Ogni classe è inizializzata da un costruttore; se non ne viene specificato uno, Java crea per ogni classe un costruttore di default “vuoto”, cioè senza parametri.