También me han enseñado esto y prefiero las interfaces siempre que sea posible (por supuesto, todavía uso la herencia donde tiene sentido).
Una cosa que creo que hace es desacoplar su código de implementaciones específicas. Digamos que tengo una clase llamada ConsoleWriter y que se pasa a un método para escribir algo y lo escribe en la consola. Ahora digamos que quiero cambiar a imprimir en una ventana GUI. Bueno, ahora tengo que modificar el método o escribir uno nuevo que tome GUIWriter como parámetro. Si comencé definiendo una interfaz IWriter y el método tomara un IWriter, podría comenzar con ConsoleWriter (que implementaría la interfaz IWriter) y luego escribir una nueva clase llamada GUIWriter (que también implementa la interfaz IWriter) y luego solo tendría que cambiar la clase que se pasa.
Otra cosa (que es cierto para C #, no estoy seguro acerca de Java) es que solo puede extender 1 clase pero implementar muchas interfaces. Digamos que tuve una clase llamada Profesor, Profesor de matemáticas e Profesor de historia. Ahora MathTeacher e HistoryTeacher se extienden desde Teacher, pero ¿qué pasa si queremos una clase que represente a alguien que sea MathTeacher e HistoryTeacher? Puede ser bastante complicado cuando intenta heredar de varias clases cuando solo puede hacerlo de una en una (hay una forma, pero no son exactamente óptimas). Con las interfaces puede tener 2 interfaces llamadas IMathTeacher e IHistoryTeacher y luego tener una clase que se extienda desde Teacher e implemente esas 2 interfaces.
Una desventaja que con el uso de interfaces es que a veces veo personas duplicando el código (ya que hay que crear la implementación para cada clase, implementar la interfaz), sin embargo, existe una solución limpia para este problema, por ejemplo, el uso de cosas como delegados (no estoy seguro cuál es el equivalente de Java a eso).
Creo que la razón más importante para usar interfaces en lugar de herencias es el desacoplamiento del código de implementación, pero no piense que la herencia es mala, ya que sigue siendo muy útil.