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,
extendsanahtar 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,
withanahtar 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 |