"Differenziare tra classi astratte e interfacce"
Una classe astratta è una classe che contiene uno o più metodi astratti, ovvero metodi senza implementazione. Un'interfaccia è un tipo che definisce un insieme di comportamenti che una classe deve implementare. Un'interfaccia non contiene alcuna implementazione, mentre una classe astratta può contenere implementazioni. Un'interfaccia può essere implementata da molte o qualsiasi classe, mentre una classe astratta può essere ereditata solo da una singola classe.