Sobes.tech
Junior — Middle

Wie soll man vorgehen, wenn in einer Klasse zwei Schnittstellen deklariert sind, die gleiche Methodennamen enthalten?

sobes.tech KI

Antwort von AI

Wenn in einer Klasse zwei Schnittstellen implementiert werden, die Methoden mit denselben Namen und Signaturen enthalten, dann:

  • Wenn die Methoden die gleiche Signatur und den gleichen Rückgabetyp haben, reicht es aus, eine Methode zu implementieren, die beide Schnittstellen erfüllt.
  • Wenn die Methoden mit denselben Namen unterschiedliche Signaturen haben (z.B. unterschiedliche Parameter), müssen beide Methoden separat implementiert werden.
  • Wenn die Schnittstellen Methoden mit denselben Namen und Signaturen enthalten, aber mit unterschiedlichen Standardimplementierungen (default methods), muss die Klasse diese Methode explizit überschreiben und angeben, welche Implementierung verwendet werden soll, oder eine eigene bereitstellen.

Beispiel mit Konflikt bei default-Methoden:

interface IFirst {
    void Method() => Console.WriteLine("First");
}
interface ISecond {
    void Method() => Console.WriteLine("Second");
}

class MyClass : IFirst, ISecond {
    public void Method() {
        // Explizit die Implementierung wählen
        ((IFirst)this).Method();
        // oder eigene Implementierung
        Console.WriteLine("MyClass Method");
    }
}

Daher muss die Klasse bei Konflikten mit Methoden mit gleichen Namen aus verschiedenen Schnittstellen in C# die Mehrdeutigkeit explizit auflösen, indem sie die Methode selbst implementiert.