Junior — Middle
Kako treba postupiti ako u klasi postoje dva interfejsa koja sadrže iste nazive metoda?
sobes.tech АИ
Одговор од АИ
Ako u klasi implementirate dva interfejsa koji sadrže metode sa istim imenima i potpisima, onda:
- Ako metode imaju isti potpis i isti tip povratne vrednosti, dovoljno je implementirati jednu metodu koja će zadovoljiti oba interfejsa.
- Ako metode sa istim imenima imaju različite potpise (na primer, različite parametre), potrebno je implementirati obe metode odvojeno.
- Ako interfejsi sadrže metode sa istim imenima i potpisima, ali sa različitim podrazumevanim (default) implementacijama, onda je u klasi potrebno eksplicitno prepisati tu metodu i navesti koju implementaciju koristiti, ili pružiti svoju.
Primer sa konfliktom default metoda:
interface IFirst {
void Method() => Console.WriteLine("First");
}
interface ISecond {
void Method() => Console.WriteLine("Second");
}
class MyClass : IFirst, ISecond {
public void Method() {
// Jasno biramo implementaciju
((IFirst)this).Method();
// ili svoju implementaciju
Console.WriteLine("MyClass Method");
}
}
Dakle, u slučaju konflikta imena metoda iz različitih interfejsa u C#, klasa mora eksplicitno da reši nejasnoću implementacijom metode sama.