このトピックの目的は、同じメソッド名で2つのインターフェースを実装する方法を尋ねることではありません。なぜ抽象的または仮想的にメソッドの明示的な実装を作成できないのか、自問自答しています。ここで簡単です:
AbstractClassは、以下を実装する抽象クラスです。
IFlexibility1
Method()
抽象として宣言することによって。IFlexibility2
Method2()
仮想として宣言することによって。
ConcreteClassは-AbstractClassであり、Method()とを実装しMethod2()
ます。大丈夫だよ !
ここで、IFlexibility1
とIFlexibility
インターフェイスが同じシグニチャvoidを持つメソッドを提供すると仮定しますMethod()
。2つの異なる実装を作成する場合は、AbstractClassで明示的な実装ルールを使用する必要があります。
// Two explicit privates methods
void IFlexibility1.Method()
{
}
void IFlexibility2.Method()
{
}
ここに私の質問があります:最初の場合のようにサブクラスにこれらのメソッドを実装させることができないのはなぜですか。実際、仮想void IFlexibility1.Method()または抽象void IFlexibility2.Method()を宣言することはできません。これらのメソッドはプライベートであるため、ロジックです。しかし、次の構文は正しい保護された抽象void IFlexibility1.Method()である可能性があると思います。どう思いますか ?
これは21世紀の問題ではないので大丈夫です。さらに、この場合に一致する2つのインターフェースを実装することはあまりありません。また、Javaは、これらの理由から明示的な実装を提供していません。