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