Sobes.tech
Middle

Dart'ta soyut sınıf ile mixin arasındaki farklar nelerdir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Soyut sınıf:

  • Doğrudan örneklenemez.
  • Soyut yöntemler (geliştirilmemiş) ve uygulanmış yöntemler içerebilir.
  • Sınıflar, extends anahtar kelimesiyle soyut sınıftan kalıtım alır.
  • Bir sınıf yalnızca bir sınıftan kalıtım alabilir (tekli kalıtım).

Miksin:

  • Doğrudan örneklenemez.
  • Yapıcılar (constructors) olamaz.
  • Uygulanmış yöntemler içerebilir, ancak soyut yöntemlere sahip olamaz (Dart 2.1'e kadar soyut miksinler ortaya çıktı).
  • Sınıflar, with anahtar kelimesiyle miksinlerin işlevselliğini kullanır.
  • Bir sınıf birden fazla miksin kullanabilir.
  • Kodun yeniden kullanılmasını ve sınıflara işlevsellik eklemeyi sağlar, kalıtım olmadan. Özünde, davranışları "karıştırmak" mümkündür.

Soyut sınıf örneği:

abstract class Animal {
  void makeSound(); // Soyut yöntem
  void eat() {
    print('Yemek yiyor...');
  }
}

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

Miksin örneği:

mixin CanJump {
  void jump() {
    print('Zıplıyor!');
  }
}

class Cat with CanJump { }

Tablo halinde karşılaştırma:

Özellik Soyut sınıf Miksin
Örnekleme Hayır Hayır
Yapıcı Sahip olabilir Olamaz
Soyut yöntemler Sahip olabilir Olamaz (Dart 2.1'e kadar)
Uygulanmış yöntemler Sahip olabilir Sahip olabilir
Kullanım extends with
Kalıtım/Kullanım Tekli kalıtım Çoklu kullanım
Amaç Genel bir sözleşme tanımlama Kod tekrarını önleme, davranış ekleme