Sobes.tech
Middle

Dartda abstrakt sinf va mixin o'rtasidagi farqlar nima?

sobes.tech AI

AIdan javob

Abstrakt sinf:

  • To'g'ridan-to'g'ri instansiya qilinmaydi.
  • Abstrakt metodlar (implementatsiz) va amalga oshirilgan metodlarni o'z ichiga olishi mumkin.
  • Sinflar extends kalit so'zi yordamida abstrakt sinfdan meros oladi.
  • Bir sinf faqat bitta sinfdan meros olishi mumkin (bir marta meros olish).

Mixin:

  • To'g'ridan-to'g'ri instansiya qilinmaydi.
  • Konstruktorlarga ega bo'lishi mumkin emas.
  • Amalga oshirilgan metodlarni o'z ichiga olishi mumkin, lekin abstrakt metodlarga ega bo'lishi mumkin emas (Dart 2.1 gacha, bu yerda abstrakt mixinlar paydo bo'ldi).
  • Sinflar with kalit so'zi yordamida mixin funksionalligidan foydalanadi.
  • Bir sinf bir nechta mixinlardan foydalanishi mumkin.
  • Kodni qayta ishlatish va sinflarga funksionallik qo'shish uchun ishlatiladi, meros olishsiz. Aslida, bu xulq-atvorlarni "aralashtirish" imkonini beradi.

Abstrakt sinf misoli:

abstract class Animal {
  void makeSound(); // Abstrakt metod
  void eat() {
    print('Yemak...');
  }
}

class Dog extends Animal {
  @override
  void makeSound() {
    print('Hov!');
  }
}

Mixin misoli:

mixin CanJump {
  void jump() {
    print(' Sakrayapti!');
  }
}

class Cat with CanJump { }

Taqqoslash jadval shaklida:

Xususiyat Abstrakt sinf Mixin
Instansiya qilish Yo'q Yo'q
Konstruktor Bo'lishi mumkin Bo'lishi mumkin emas
Abstrakt metodlar Bo'lishi mumkin Bo'lishi mumkin emas (Dart 2.1 gacha)
Amalga oshirilgan metodlar Bo'lishi mumkin Bo'lishi mumkin
Foydalanish extends with
Meros olish/Foydalanish Yagona meros Ko'p foydalanish
Maqsad Umumiy shartnoma aniqlash Kodni qayta ishlatish, xulq-atvor qo'shish