Sobes.tech
Junior — Middle

Klasslar uchun shartnomalarni belgilashda abstrakt sinf va interfeysni ishlatish o'rtasidagi farq nima?

sobes.tech AI

AIdan javob

C# tilida abstrakt sinf va interfeys shartnomalarni belgilash uchun xizmat qiladi, ammo asosiy farqlarga ega:

  • Abstrakt sinf metodlar, maydonlar, konstruktorlar va xususiyatlarning amalga oshirilishini o'z ichiga olishi mumkin. U merosxo'rlarga asosiy amalga oshirish va umumiy funksionallikni belgilash uchun ishlatiladi.
  • Interfeys faqat metodlar, xususiyatlar va voqealarning imzolarini belgilaydi, amalga oshirishni o'z ichiga olmaydi (C# 8.0 gacha; C# 8.0 dan boshlab interfeyslar standart amalga oshirishni o'z ichiga olishi mumkin).

Shuningdek, sinf faqat bitta abstrakt sinfdan meros olishi mumkin, ammo bir nechta interfeyslarni amalga oshirishi mumkin.

Misol:

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

interface IFlyable
{
    void Fly();
}

class Bird : Animal, IFlyable
{
    public override void MakeSound() { Console.WriteLine("Chirp"); }
    public void Fly() { Console.WriteLine("Uchmoqda"); }
}

Shu tarzda, abstrakt sinf umumiy asosiy xulq-atvor uchun mos keladi, interfeys esa turli sinflar tomonidan amalga oshirilishi mumkin bo'lgan imkoniyatlar to'plamini belgilaydi.