Junior — Middle
Agar sinfda bir xil nomli metodlarni o'z ichiga olgan ikkita interfeys e'lon qilingan bo'lsa, qanday harakat qilish kerak?
sobes.tech AI
AIdan javob
Agar sinfda bir xil nomlar va imzolar bilan metodlarni o'z ichiga olgan ikkita interfeys amalga oshirilsa:
- Agar metodlar bir xil imzoga va qaytish turiga ega bo'lsa, ikkisini ham qanoatlantiradigan bitta metodni amalga oshirish kifoya.
- Agar bir xil nomli metodlar turli imzolarga ega bo'lsa (masalan, turli parametrlar bilan), har ikkala metodni alohida amalga oshirish kerak.
- Agar interfeyslar bir xil nomlar va imzolar bilan metodlarni o'z ichiga olsa, lekin ularning default (standart) amalga oshirishlari farq qilsa, sinfda bu metodni aniq qayta yozish va qaysi amalga oshirishni ishlatishni ko'rsatish yoki o'zini taqdim etish kerak.
Default metodlar bilan muammo misoli:
interface IFirst {
void Method() => Console.WriteLine("First");
}
interface ISecond {
void Method() => Console.WriteLine("Second");
}
class MyClass : IFirst, ISecond {
public void Method() {
// Aniq amalga oshirishni tanlash
((IFirst)this).Method();
// yoki o'z amalga oshirishimiz
Console.WriteLine("MyClass Method");
}
}
Shuning uchun, C# da turli interfeyslar metodlarining nomlari to'qnashganda, sinf bu noaniqlikni aniq hal qilishi va metodni o'zi amalga oshirishi shart.