Sobes.tech
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 extends aç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 with aç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ı