これは不可能であり、少なくとも Java では不可能です。次のシナリオを考えてみてください。
interface Base<K> {
K get();
}
interface A extends Base<String> {
String get();
}
interface B extends Base<Integer> {
Integer get();
}
interface AB extends A, B {
??
}
AB を実装しようとすると、可能であれば get() メソッドはどのような型を返しますか。Java では、クラス内の 2 つのメソッドが同じ名前/引数を持つことはできませんが、戻り値の型は異なります。したがって、これは禁止されています。
Javaがこれを許可した場合に得られるものと同様の機能が実際に必要な場合は、次のことをお勧めします。
abstract class C {
A a;
B b;
String aGet() {
return a.get();
}
Integer bGet() {
return b.get();
}
}
または、ジェネリックを保持するには:
abstract class C<K, T> {
Base<K> a;
Base<T> b;
K getA() {
return a.get();
}
T getB() {
return b.get();
}
}