Проблема в том, что если Transformable::quarter
измениться на метод по умолчанию, который должен быть обратно совместимым изменением с точки зрения интерфейса, это вызовет проблему алмаза . Какое из двух значений по умолчанию будет выбрано?
Компилятор, конечно, не знает, и поэтому самое безопасное - заставить человека, пишущего реализацию, решить проблему , даже если проблема еще не существует Заставив разработчика разрешить неоднозначность, Transformable::quarter
может в будущем перейти на метод по умолчанию, не нарушая SomethingQuarterly
.
Если два метода концептуально связаны и Quarterly
должен переопределить Transformable
, вы Quarterly
должен расширить этот интерфейс.
interface Quarterly extends Transformable {
//...
}