Junior — Middle
Класс ичинде бирдей аталыштагы методдорду камтыган эки интерфейс жарыяланган болсо, кандай кылуу керек?
sobes.tech AI
AIден жооп
Эгерде класс ичинде эки интерфейс ишке ашырылса, алардын методтору бирдей аталышта жана имзо менен болсо:
- Эгер методтордун имзосу жана кайтаруу түрү бирдей болсо, эки интерфейсти да канааттандыра турган бир методду ишке ашыруу жетиштүү.
- Эгер бирдей аталыштагы методдордун имзалары ар башка болсо (мисалы, ар башка параметрлер менен), анда эки методду да өзүнчө ишке ашыруу керек.
- Эгер интерфейстер бирдей аталыштагы жана имзасы менен методдорду камтыса, бирок ар башка default (өзүнчө) ишке ашырылышы болсо, анда класс ичинде бул методду ачык түрдө кайра жазып, кайсы ишке ашыруу колдонулушу керектигин көрсөтүү же өзүнчө иштеп чыгуу керек.
Default методдор менен конфликттин мисалы:
interface IFirst {
void Method() => Console.WriteLine("First");
}
interface ISecond {
void Method() => Console.WriteLine("Second");
}
class MyClass : IFirst, ISecond {
public void Method() {
// Ачык түрдө ишке ашыруу тандоо
((IFirst)this).Method();
// же өзүнүн ишке ашырылышы
Console.WriteLine("MyClass Method");
}
}
Ошондуктан, C#да ар башка интерфейстерден келген бирдей аталыштагы методдор кагылышса, класс бул такталбасты ачык түрдө чечип, методду өзү ишке ашырышы керек.