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("Парвоз мекунад"); }
}

Бинобар ин, класи абстрактӣ барои рафтори умумӣ мувофиқ аст, ва интерфейс барои муайян кардани маҷмӯи имконот, ки метавонанд дар синфҳои гуногун татбиқ шаванд.