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
extendskalit 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
withkalit 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 |