当您使用抽象类来实现接口时,Java中会发生奇怪的事情:某些接口的方法可能完全丢失(即既不存在抽象声明也不存在实际实现),但编译器不会抱怨.
例如,给定接口:
public interface IAnything {
void m1();
void m2();
void m3();
}
Run Code Online (Sandbox Code Playgroud)
以下抽象类在没有警告或错误的情况下快速编译:
public abstract class AbstractThing implements IAnything {
public void m1() {}
public void m3() {}
}
Run Code Online (Sandbox Code Playgroud)
你能解释一下原因吗?