Middle
Dart-da abstrakt sinif və mixin arasındakı fərqlər nələrdir?
sobes.tech Süni İntellekt
AI-dan cavab
Mürəkkəb sinif:
- Birbaşa nümunə kimi götürülə bilməz.
- Tərtib olunmamış metodlar (abstrakt metodlar) və tətbiq olunmuş metodlar daxil edə bilər.
- Siniflər
extendsaçar sözü ilə abstrakt sinifdən irs götürür. - Bir sinif yalnız bir sinifdən irs ala bilər (tək irs).
Mixins:
- Birbaşa nümunə kimi götürülə bilməz.
- Konstruktorlara malik ola bilməz.
- Tətbiq olunmuş metodlar daxil edə bilər, lakin abstrakt metodlara malik ola bilməz (Dart 2.1-ə qədər, burada abstrakt mixinlər ortaya çıxdı).
- Siniflər
withaçar sözü ilə mixin funksionallığını istifadə edir. - Bir sinif bir neçə mixin istifadə edə bilər.
- Kodun təkrar istifadəsi və siniflərə funksionallıq əlavə etmək üçün istifadə olunur, irs olmadan. Əsasən, davranışların "qarışdırılmasına" imkan verir.
Abstrakt sinif nümunəsi:
abstract class Animal {
void makeSound(); // Abstrakt metod
void eat() {
print('Yemək...');
}
}
class Dog extends Animal {
@override
void makeSound() {
print('Hav!');
}
}
Mixin nümunəsi:
mixin CanJump {
void jump() {
print('Atlayır!');
}
}
class Cat with CanJump { }
Cədvəl şəklində müqayisə:
| Xüsusiyyət | Abstrakt sinif | Mixin |
|---|---|---|
| İstifadə | Yox | Yox |
| Konstruktor | Ola bilər | Ola bilməz |
| Abstrakt metodlar | Ola bilər | Ola bilməz (Dart 2.1-ə qədər) |
| Tətbiq olunmuş metodlar | Ola bilər | Ola bilər |
| İstifadə | extends |
with |
| İrsiyyət/istifadə | Yalnız bir irsiyyət | Çoxsaylı istifadə |
| Məqsəd | Ümumi müqavilənin müəyyənləşdirilməsi | Kodun təkrar istifadəsi, davranışların əlavə olunması |