Classe abstraite.
Une classe abstraite est une classe possédant des méthodes abstraites.
Une méthode abstraite ne possède pas d'implémentation, mais est utilisée par la classe elle-même ou une autre classe. Il n'est pas possible de créer et d'utiliser une instance directe d'une classe abstraite. Il faut utiliser une sous-classe qui implémente toutes les méthodes abstraites.
Interface.
Une interface ne contient que des méthodes abstraites.
Comme une classe abstraite, il n'est pas possible de créer et d'utiliser une instance directe d'une interface. Il faut utiliser une classe qui implémente cette interface, c'est à dire toutes les méthodes abstraites de celle-ci.
Différence.
La différence entre classe abstraite et interface peut ne pas être évidente au premier abord.
Afin de bien concevoir un modèle objet, voici les principales différences :

Apprendre à jouer aux échecs/Choisir son jeu

Jeu vidéo d'échecs.
Pour choisir son jeu vidéo d'échecs, on choisira un jeu en 3D ou en 2D selon les critères suivants :
Mes conseils : http://jchecs.free.fr/fr/index.php en 2D (gratuit, libre, Java) et http://wjchess.jeffprod.com/ en 3D (gratuit, propriétaire, Windows), Dreamchess (disponible sur GNU/Linux, MacOS, BeOS, Dreamcast, Windows, gratuit, en 2D et 3D, libre : http://www.dreamchess.org/).
Jeu d'échecs réel.
Pour choisir son jeu d'échecs réel, on prendra compte des critères suivants :
Un jeu d'échecs électronique devra tenir compte de tous ces critères à la fois. Au besoin, on prendra les pièces d'un jeu "normal" pour jouer sur un plateau électronique. Certains de ces jeux sont reliables à un ordinateur, via une prise USB par exemple, d’autres ont un déplacement automatique des pièces, par bras robotisé.

Pour lire Platon/Conseils pour la lecture