Меня тоже этому учили, и я предпочитаю интерфейсы, где это возможно (конечно, я все еще использую наследование там, где это имеет смысл).
Одна вещь, я думаю, что это делает, это отделить ваш код от конкретных реализаций. Скажем, у меня есть класс ConsoleWriter, который передается в метод для записи чего-либо и записывает это в консоль. Теперь допустим, что я хочу переключиться на печать в окне графического интерфейса. Что ж, теперь я должен либо изменить метод, либо написать новый, который принимает GUIWriter в качестве параметра. Если бы я начал с определения интерфейса IWriter, а метод взял IWriter, я мог бы начать с ConsoleWriter (который будет реализовывать интерфейс IWriter), а затем позже написать новый класс с именем GUIWriter (который также реализует интерфейс IWriter), а затем я нужно было бы просто выключить передаваемый класс.
Еще одна вещь (которая верна для C #, но не для Java) - это то, что вы можете расширить только один класс, но реализовать много интерфейсов. Допустим, у меня были классы под названием Учитель, Учитель математики и Учитель истории. Теперь MathTeacher и HistoryTeacher простираются от Teacher, но что если нам нужен класс, представляющий кого-то, кто является одновременно MathTeacher и HistoryTeacher. Это может стать довольно грязным, когда вы пытаетесь наследовать от нескольких классов, когда вы можете делать это только по одному (есть способы, но они не совсем оптимальны). С помощью интерфейсов вы можете иметь 2 интерфейса, называемых IMathTeacher и IHistoryTeacher, а затем иметь один класс, который расширяется от Teacher и реализует эти 2 интерфейса.
Недостатком использования интерфейсов является то, что иногда я вижу, как люди дублируют код (поскольку вы должны создать реализацию для каждого класса, реализующего интерфейс), однако существует чистое решение этой проблемы, например, использование таких вещей, как делегаты (не уверен что такое эквивалент Java).
Думаю, что основной причиной использования интерфейсов вместо наследования является разделение кода реализации, но не думайте, что наследование является злом, поскольку оно все еще очень полезно.