抽象クラスを使用してインターフェースを実装すると、Java で奇妙なことが起こります。インターフェースのメソッドの一部が完全に欠落している可能性があります (つまり、抽象宣言も実際の実装も存在しない) が、コンパイラは文句を言いません。
たとえば、次のインターフェイスがあるとします。
public interface IAnything {
void m1();
void m2();
void m3();
}
次の抽象クラスは、警告やエラーなしで楽しくコンパイルされます。
public abstract class AbstractThing implements IAnything {
public void m1() {}
public void m3() {}
}
理由を説明できますか?