Sobes.tech
Junior — Middle

Əgər sinifdə eyni adlı metodlar ehtiva edən iki interfeys elan olunubsa, necə davranmaq lazımdır?

sobes.tech Süni İntellekt

AI-dan cavab

Əgər sinifdə eyni ad və imzaya malik metodlar saxlayan iki interfeys tətbiq olunursa:

  • Əgər metodlar eyni imzaya və geri dönüş tipinə malikdirsə, hər iki interfeysi təmin edən tək bir metod tətbiq etmək kifayətdir.
  • Əgər eyni adlı metodların imzaları fərqlidirsə (məsələn, fərqli parametrlər), onda hər iki metodu ayrıca tətbiq etmək lazımdır.
  • Əgər interfeyslər eyni ad və imzaya malik metodlar ehtiva edir, lakin fərqli default (standart) tətbiqləri varsa, sinifdə bu metodu açıq şəkildə yenidən yazmaq və hansı tətbiqi istifadə etmək istədiyinizi göstərmək və ya özünüzün tətbiqinizi təmin etmək lazımdır.

Default metodlar ilə konflikt nümunəsi:

interface IFirst {
    void Method() => Console.WriteLine("First");
}
interface ISecond {
    void Method() => Console.WriteLine("Second");
}

class MyClass : IFirst, ISecond {
    public void Method() {
        // Açıqlıqla tətbiqi seçirik
        ((IFirst)this).Method();
        // və ya öz tətbiqimiz
        Console.WriteLine("MyClass Method");
    }
}

Bu səbəbdən, C#-da müxtəlif interfeyslərdən gələn eyni adlı metodlar toqquşduqda, sinif bu qeyri-müəyyənliyi açıq şəkildə həll etməli və metodu özü tətbiq etməlidir.