Der wichtigste Unterschied: eine Klasse X kann nur von einer anderen Klasse erben. Sie kann aber beliebig viele Interfaces implementieren. Ein Interface beschreibt eine "verhält-sich-wie-ein" Verhältnis, eine abstrakte Klasse beschreibt ein "ist-ein" Verhältnis. Beispiel:
Ein Student, der einen Nebenjob als Kinomitarbeiter hat, verhält sich sowohl wie ein Student (geht zur Uni, schreibt Klausuren, lernt...) und auch wie ein Kinokartenverkäufer (kontrolliert Ausweise, verkauft Kinokarten, ...). Er ist aber ein Mensch. Das Konzept eines Menschen ist aber etwas abstraktes; man redet immer von Personen, wenn man sich auf konkrete Lebewesen bezieht. Also kann man Mensch als abstrakte Klasse sehen. Ergo class StudentMitKinoNebenjob extends Mensch implements Student, Kinomitarbeiter.