Почему абстрактный класс, реализующий интерфейс, может пропустить объявление / реализацию одного из методов интерфейса?
Любопытная вещь случается в Java, когда вы используете абстрактный класс для реализации интерфейса: некоторые методы интерфейса могут полностью отсутствовать (то есть не присутствует ни абстрактного объявления, ни фактической реализации), но компилятор не жалуется.
Например, учитывая интерфейс:
public interface IAnything {
void m1();
void m2();
void m3();
}
следующий абстрактный класс весело компилируется без предупреждения или ошибки:
public abstract class AbstractThing implements IAnything {
public void m1() {}
public void m3() {}
}
Вы можете объяснить, почему?