CodeBlanks Logo Icon CodeBlanks

mixin kısıtları

on ile mixin kısıtlarını öğrenirsin.

on kısıtı

Bazen bir mixin yalnızca belirli bir türden sınıflara uygulansın istersin. on anahtar kelimesi mixin'i bir üst türle kısıtlar; mixin ancak o türü extend eden sınıflara uygulanabilir.

Örnek: mixin Walker on Animal { void walk() { print('$name yürüyor'); } }. Burada Walker mixin'i yalnızca Animal'ı extend eden sınıflara uygulanabilir. Bu sayede mixin gövdesinde Animal'ın name alanına güvenle erişilir. Kısıt yoksa mixin, herhangi bir sınıfa uygulanabilir ama üst türün üyelerini kullanamaz.

on ve güvenli erişim

on kısıtı yalnızca uygulama sınırı koymaz; mixin gövdesine üst türün üyelerine erişim izni de verir. Bu, mixin'in güvenli ve anlamlı çalışmasını sağlar.

Örnek: Walker on Animal mixin'i Animal'ın name alanını kullanır. Eğer on Animal kısıtı olmasaydı, mixin gövdesinde name erişimi derleme hatası verirdi. Kısıt, derleyiciye 'bu mixin yalnızca Animal türevlerinde çalışır; name alanı her zaman var' diye bildirir. Bu sayede mixin kodu güvenli ve doğru çalışır.

Uygulama Walker mixin'ini on ile yaz

Animal adında bir sınıf tanımla; String name alanını ve Animal(this.name) yapıcısını ekle. mixin Walker on Animal bildir; void walk() { print('$name yürüyor'); } metodunu ekle. Dog adında, Animal'ı extend eden ve Walker mixin'ini uygulayan bir sınıf yaz: class Dog extends Animal with Walker { Dog(String name) : super(name); }. main içinde var d = Dog('Karabaş'); ile örnek oluştur ve d.walk() çağrısı yap.

Başlangıç kodu

main.dart
// Animal sınıfını tanımla
// Walker mixin'ini on Animal ile tanımla
// Dog sınıfını Animal + Walker ile yaz

void main() {
  // Dog('Karabaş') örneği oluştur ve walk() çağır
}

Örnek çözüm

main.dart
// Animal sınıfını tanımla
class Animal {
  String name;
  Animal(this.name);
}

mixin Walker on Animal {
  void walk() {
    print('$name yürüyor');
  }
}

class Dog extends Animal with Walker {
  Dog(String name) : super(name);
}

void main() {
  var d = Dog('Karabaş');
  d.walk();
}

Beklenen çıktı

Karabaş yürüyor

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 on parçalarını eşle

Kavram Anlamı
on Kısıt anahtarı
Animal Üst tür
Walker Mixin adı

2 on kısıtını ekle

Soru
mixin Walker ____ Animal {
  void walk() {
    print('$name yürüyor');
  }
}
Cevap
mixin Walker on Animal {
  void walk() {
    print('$name yürüyor');
  }
}

Açıklama: on, mixin'i bir üst türle kısıtlar.

3 mixin Walker on Animal ne sağlar?

  • Walker, Animal'ın alt sınıfı olur
  • Walker yalnızca Animal'ı extend eden sınıflara uygulanabilir Doğru cevap
  • Walker otomatik olarak tüm sınıflara uygulanır
  • Walker bir yapıcı kazanır

Açıklama: on kısıtı, mixin'in yalnızca belirli türden sınıflara uygulanmasını sağlar.

Orta seviye bölümündeki tüm dersler