La diferencia entre una clase abstracta y una interfaz, es el nivel de restricción.
Una clase abstracta puede tener atributos y métodos abstractos, como también atributos y métodos normales. Además, una clase abstracta puede heredar sus atributos y clases a través de la Herencia.
En cambio, una interfaz no puede tener atributos y métodos normales, solo abstractos. Y una interfaz no puede heredar sus atributos y métodos a través de la Herencia, porque una interfaz se "implementa". Al implementarse, obliga a la clase que la implementa a hacer uso completo de sus métodos y atributos. Esto quiere decir que si la interfaz tiene 3 métodos, la clase que la implementa debe implementar esos 3 métodos, ni más, ni menos.
Por ejemplo, en el siguiente ejemplo la clase perro es hija de la clase Animal:
public class Perro extends Animal
La palabra reservada extends indica que hay Herencia entre ambas clases.
public class Perro extends Animal implements Accesorio
Ahora la clase Perro que hereda de Animal, además implementa la interfaz Accesorio.
Y accesorio tenía los métodos "tieneCollar", "tieneChaleco" y "tienePantuflas". Y ahora el perro debe implementarlos.