A curious thing happens in Java when you use an abstract class to implement an interface: some of the interface's methods can be completely missing (i.e. neither an abstract declaration or an actual implementation is present), but the compiler does not complain.
For example, given the interface:
public interface IAnything {
void m1();
void m2();
void m3();
}
the following abstract class gets merrily compiled without a warning or an error:
public abstract class AbstractThing implements IAnything {
public void m1() {}
public void m3() {}
}
Can you explain why?