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.