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#-ում տարբեր ինտերֆեյսներից եկող նույն անունով մեթոդների կոնֆլիկտի դեպքում՝ դասը պետք է բացահայտորեն լուծի անհամապատասխանությունը՝ իրականացնելով մեթոդը ինքնուրույն։