mixin kısıtları
- Dart kursu
- Orta seviye
- Ders 26/116
- 5 dk
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
// 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
// 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
mixin Walker ____ Animal {
void walk() {
print('$name yürüyor');
}
}
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.