Sobes.tech
Junior — Middle

Sinflər üçün müqavilələri təyin edərkən abstrakt sinif və interfeys istifadə etmək arasındakı fərq nədir?

sobes.tech Süni İntellekt

AI-dan cavab

C# dilində abstrakt sinif və interfeys müqavilələri müəyyən etmək üçün istifadə olunur, lakin əsas fərqlərə malikdir:

  • Abstrakt sinif metodların, sahələrin, qurucuların və xüsusiyyətlərin tətbiqini ehtiva edə bilər. Bu, irsi üçün əsas tətbiqi və ümumi funksionallığı müəyyən etmək istədiyiniz zaman istifadə olunur.
  • İnterfeys yalnız metodların, xüsusiyyətlərin və hadisələrin imzalarını təyin edir, tətbiqini daxil etmir (C# 8.0-ə qədər; C# 8.0-dən başlayaraq, interfeyslər standart tətbiqlər daxil edə bilər).

Həmçinin, sinif yalnız bir abstrakt sinifdən irs ala bilər, lakin çoxlu interfeysləri tətbiq edə bilər.

Nümunə:

abstract class Animal
{
    public abstract void MakeSound();
    public void Sleep() { Console.WriteLine("Yatır"); }
}

interface IFlyable
{
    void Fly();
}

class Bird : Animal, IFlyable
{
    public override void MakeSound() { Console.WriteLine("Cıvıldamaq"); }
    public void Fly() { Console.WriteLine("Uçmaq"); }
}

Beləliklə, abstrakt sinif ümumi əsas davranış üçün uyğundur, və interfeys müxtəlif sinflər tərəfindən həyata keçirilə biləcək imkanlar toplusunu müəyyən edir.