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