Extension vs subclass
- Dart kursu
- Uzman
- Ders 23/47
- 5 dk
Extension ve subclass farkını öğrenirsin.
Extension vs subclass
Extension ve subclass, bir türe işlev eklemenin iki yoludur. Extension, türün dışından metot ekler (kalıtım yok); subclass, türü genişletir (kalıtım vardır).
Extension avantajları: final sınıfları genişletebilir, kontrol etmediğin türlere işlev ekleyebilir. Subclass avantajları: durum ekleyebilir, override yapabilir, polymorphism sağlar. Hangisi kullanılacağı ihtiyaca bağlıdır.
Ne zaman hangisi?
Extension kullan: türe yalnızca yardımcı metot eklemek istediğinde, türün sahibi değilsen, kalıtım gerekmediğinde. Subclass kullan: türe yeni durum (alan) eklemek istediğinde, override yapacaksan, polymorphism gerekiyorsa.
Extension'lar durumsuzdur (stateless); yeni alan eklenemez. Subclass'lar durum ekleyebilir. Ayrıca extension'lar statik çözümlenir; subclass'lar dinamik. Bu nedenle polymorphism gerektiğinde subclass şarttır.
Uygulama StringShout extension
Bir StringShout extension'ı tanımla: on String olsun ve String shout() => toUpperCase() + '!'; metodu içersin. main içinde print('merhaba'.shout()); çağrısını ekle.
Başlangıç kodu
void main() {
// StringShout extension'ını tanımla (on String; shout metodu)
// 'merhaba'.shout() yazdır
}Örnek çözüm
extension StringShout on String {
String shout() => toUpperCase() + '!';
}
void main() {
print('merhaba'.shout());
}Beklenen çıktı
MERHABA!
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Extension on String
extension StringShout on ____ {
String shout() => toUpperCase() + '!';
}
extension StringShout on String {
String shout() => toUpperCase() + '!';
}
Açıklama: extension StringShout on String, String'i genişletir.
2 Extension ve subclass farklarını eşleştir
| Kavram | Anlamı |
|---|---|
Extension |
Kalıtım yok |
Subclass |
Kalıtım var |
Final sınıf |
Extension ile genişletilebilir |
Polymorphism |
Subclass ile |
3 Hangi durumda subclass yerine extension kullanılır?
- Override yapmak için
- Türe yeni alan eklemek için
- Polymorphism için
- Türe yalnızca yardımcı metot eklemek için Doğru cevap
Açıklama: extension yardımcı metot eklemek için idealdir.