2 つのインターフェイス I1 と I2 があり、両方のインターフェイスが同じメソッドを持っているとします。
1)public int add(int a) throws exception e1 //(Interface 1)
2)public int add(int a) throws exception e2 //(Interface 2)
現在、クラスは I1 と I2 の両方を実装しています。
@override
public int add(int a) exception e1
{
//adding operation
}
注:同じメソッドを持つ複数のインターフェイスを実装する場合、実装クラスには 1 つの実装しかないことを理解しています。
コンパイラは、throws 句に基づいて、このメソッドが I1 または I2 からのものかどうかを推測しますか? メソッド署名の明確化は必要ですか? (署名には、渡された名前とパラメーターが含まれていることを知っています。)
両方のインターフェースを実装してから e1 のみをスローする場合、実装するクラスが実際には両方のインターフェースを実装していないため、コンパイラはこれを許可しますか? それはダイヤモンド構造の問題を引き起こしますか?
throws 句 e1 と 2 回目の e2 で同じメソッドを実装する必要がありますか? これを試したとき、コンパイラはメソッドが重複していることを教えてくれました。
最初に I1 を実装すると、それが I1 のメソッドであることが示され、最初に I2 を記述すると、その I2 のメソッドであることが示されます。なぜそうなのか説明せよ。