В статье прочитала, что с Java 8 в интерфейсах появились методы по умолчанию. До этого момента все было понятно - если в классе есть хотя бы один абстрактный метод, от это абстрактный класс. Если все методы абстрактные - то это интерфейс. Теперь вопрос в том, на что мне опираться при создании программы, чтобы выбрать для реализации задуманной логики одно из двух (интерфейс или абстрактный класс), если они слишком похожи. Может есть какие-то различия, которые я не беру в расчет? Пример интерфейса с методом по умолчанию:
public interface Swimmable {

   public default void swim() {
       System.out.println("Плыви!");
   }

   public void eat();

   public void run();
}