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