Sobes.tech
Junior — Middle

Чӣ гуна бояд рафтор кард, агар дар синф ду интерфейс эълон карда шаванд, ки дорои номҳои якхелаи методҳо мебошанд?

sobes.tech AI

Ҷавоб аз AI

Агар дар синф ду интерфейс амалӣ карда шаванд, ки дорои методҳо бо номҳои ва имзоҳои якхела бошанд, пас:

  • Агар методҳо имзо ва навъи баргардонидашавии якхела дошта бошанд, кофист як методро амалӣ кардан, ки ҳарду интерфейсро қонеъ гардонад.
  • Агар методҳо бо номҳои якхела имзоҳои гуногун дошта бошанд (масалан, параметрҳои гуногун), пас бояд ҳарду методро алоҳида амалӣ кард.
  • Агар интерфейсҳо методҳо бо номҳои ва имзоҳои якхела дошта бошанд, аммо бо амалишавии пешфарз (default methods) гуногун, пас дар синф бояд ин методро ба таври ошкоро иваз кард ва нишон дод, ки кадом амалишавиро истифода бурдан мехоҳед, ё худи худро пешниҳод кунед.

Масалан бо муноқишаи default methods:

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#, синф бояд муноқишаро ба таври ошкоро ҳал кунад ва методро худ амалӣ кунад.