Sobes.tech
Junior — Middle

Ի՞նչ է տարբերությունը ապակառուցված դասի և ինտերֆեյսի օգտագործման միջև դասերի պայմանների սահմանման ժամանակ։

sobes.tech AI

Պատասխան AI-ից

C#-ի մեջ աբստրակտ դասը և ինտերֆեյսը ծառայում են պայմանագրերի սահմանման համար, բայց ունեն հիմնական տարբերություններ՝

  • Աբստրակտ դաս կարող է պարունակել մեթոդների, դաշտերի, կոնստրուկտորների և հատկությունների իրագործումներ։ Այն օգտագործվում է, երբ անհրաժեշտ է սահմանել հիմնական իրագործում և ընդհանուր գործառույթներ ժառանգների համար։
  • Ինտերֆեյս միայն մեթոդների, հատկությունների և իրադարձությունների ստորագրություններն է սահմանում առանց իրագործման (C# 8.0-ով մինչև; C# 8.0-ից սկսած, ինտերֆեյսները կարող են պարունակել նախնական իրագործումներ):

Բացի այդ, դասը կարող է ժառանգել միայն մեկ աբստրակտ դասից, բայց կարող է իրագործել մի քանի ինտերֆեյսներ։

Օրինակ՝

abstract class Animal
{
    public abstract void MakeSound();
    public void Sleep() { Console.WriteLine("Ինքնամփոփում"); }
}

interface IFlyable
{
    void Fly();
}

class Bird : Animal, IFlyable
{
    public override void MakeSound() { Console.WriteLine("Չիչք"); }
    public void Fly() { Console.WriteLine("Ուժեղ թռչում"); }
}

Այսպիսով, աբստրակտ դասը հարմար է ընդհանուր հիմնական վարքագծի համար, իսկ ինտերֆեյսը՝ տարբեր դասարանների կողմից իրականացվող հնարավորությունների հավաքածու սահմանելու համար։