試してみるのが一番:
public interface Operation {
public int add();
}
public class SimpleOperation implements Operation {
@Override
public int add() {
return 0;
}
public int add(int id, String name) {
return id;
}
}
使用時:
Operation op = new SimpleOperation();
op.add(); // Valid
op.add(2, "two"); // Invalid
基本的に、そのメソッドをクラスに追加することはできますが、それがインターフェイスに存在しない場合、呼び出すインスタンスがそのインターフェイスのものである場合は呼び出すことができません。
ただし、インスタンスは classSimpleOperation
であり、オーバーロードされたメソッドが宣言されているため、これは有効です。
SimpleOperation op = new SimpleOperation();
op.add(); // Valid
op.add(2, "two"); // Also valid
ただし、これによりインターフェイスの有用性が低下します。メソッドをオーバーロードしたい場合は、両方のメソッドが定義された抽象スーパークラスを使用し、サブクラスでそれらをオーバーライドすることを検討してください。または、元のメソッドとオーバーロードされたメソッドの両方をインターフェイスに追加します。