Почему абстрактный класс, реализующий интерфейс, может пропустить объявление / реализацию одного из методов интерфейса?

Любопытная вещь случается в Java, когда вы используете абстрактный класс для реализации интерфейса: некоторые методы интерфейса могут полностью отсутствовать (то есть не присутствует ни абстрактного объявления, ни фактической реализации), но компилятор не жалуется.

Например, учитывая интерфейс:

public interface IAnything {
  void m1();
  void m2();
  void m3();
}

следующий абстрактный класс весело компилируется без предупреждения или ошибки:

public abstract class AbstractThing implements IAnything {
  public void m1() {}
  public void m3() {}
}

Вы можете объяснить, почему?

Ответы на вопрос(7)

Ваш ответ на вопрос