Sobes.tech
Junior — Middle

Obyektga yo'naltirilgan dasturlashda abstrakt sinf va interfeys o'rtasidagi farqlar nimalardan iborat?

sobes.tech AI

AIdan javob

Abstrakt sinf va interfeys ob'ektga yo'naltirilgan dasturlashda shartnomalar va xulq-atvorlarni tasvirlashning ikki usuli bo'lib, ular turli xususiyatlarga ega:

  • Abstrakt sinf abstrakt metodlarni (implementatsiyasiz) va shuningdek, implementatsiyali metodlar va maydonlarni (holat) o'z ichiga olishi mumkin. U meros olish uchun asosiy sinf sifatida xizmat qiladi.
  • Interfeys faqat metodlarning imzolarini (shartnoma) tasvirlaydi, holatni o'z ichiga olmaydi va odatda implementatsiyani ham o'z ichiga olmaydi (ba'zi tillarda standart metodlar mumkin).

Farqlar:

  • Bir sinf faqat bitta abstrakt sinfdan meros olishi mumkin, ammo bir nechta interfeyslarni amalga oshirishi mumkin.
  • Abstrakt sinf konstruktorlarga ega bo'lishi mumkin, interfeys esa emas.
  • Abstrakt sinf funksionallikni qisman amalga oshirish uchun ishlatiladi, interfeys faqat shartnomani belgilash uchun.

Dart (Flutter) misoli:

abstract class Animal {
  void eat(); // abstrakt metod
  void sleep() {
    print('Uyquda'); // implementatsiyali metod
  }
}

// Dart'da interfeys — faqat abstrakt metodlar bilan sinf
abstract class Flyable {
  void fly();
}

class Bird extends Animal implements Flyable {
  @override
  void eat() {
    print('Qush ovqatlanmoqda');
  }

  @override
  void fly() {
    print('Qush uchmoqda');
  }
}