これが私がしばらく頭を悩ませてきたものです。
インターフェイスでメソッドを指定したいが、実装レベルまで実際にメソッドを定義したくないとします。つまり、抽象クラスで定義されている場合にコンパイラがエラーをスローするように、インターフェイスでメソッドを指定する必要があります。
public interface Thing{
public void method1();
public void method2();
//method3 should be implementation specific
public void method3();
}
そして、私は抽象クラスを持っています:
public abstract class BasicThing{
@Override
public void method1(){}
@Override
public void method2(){}
}
そして私の実装固有のコード:
public class ThingImpl{
@Override
public void method3(){}
}
(ちなみに、このように書くのは有効だと思いますが、これをやりたい理由は、インターフェイスを書いているときに他の人に渡して、他の人に渡してもらうためです。最終的な実装では、それらに追加の仕様を強制できるようにしたいと思います)