Я рассматриваю новые методы виртуального расширения в интерфейсах Java 8:
public interface MyInterface {
default String myMethod() {
return "myImplementation";
}
}
Я получаю их цель, позволяя интерфейсу эволюционировать с течением времени и бит множественного наследования, но они выглядят ужасно, как абстрактный класс для меня.
Если вы делаете новую работу, то абстрактные классы предпочитаются над методами расширения, чтобы обеспечить реализацию "интерфейса" или эти два подхода концептуально эквивалентны?