Override
- Dart kursu
- Orta seviye
- Ders 9/116
- 5 dk
@override ile metot yeniden tanımlamayı öğrenirsin.
@override
Alt sınıf, üst sınıfın bir metodunu yeniden tanımlayabilir. Bu işlem override (geçersiz kılma) olarak adlandırılır ve Dart @override annotasyonuyla işaretlemeyi önerir.
Örnek: class Dog extends Animal { @override void speak() { print('Hav hav'); } }. Burada Dog, Animal'ın speak metodunu kendi sürümüyle değiştirir. @override annotasyonu bir yorum değil; derleyiciye niyeti bildirir. Yanlış imza yazarsanız hata alırsınız; bu yüzden güvenli bir işaretleyicidir. Çağrı, örneğin türüne göre çalışır: Dog().speak() 'Hav hav' yazar.
Çok biçimlilik
Bir üst sınıf referansı, alt sınıf örneklerini tutabilir. Çağrı, örneğin gerçek türüne göre yapılır; bu davranış çok biçimlilik (polymorphism) olarak adlandırılır.
Örnek: Animal a = Dog(); a.speak();. Burada a'nın statik türü Animal, dinamik türü Dog'dur. speak() çağrısı Dog'un sürümünü çalıştırır. Bu sayede bir liste farklı alt sınıf örnekleri tutabilir ve her biri kendi speak() sürümünü çalıştırır. Çok biçimlilik, kodun esnek ve genişletilebilir olmasını sağlar.
Uygulama Dog'da speak'i override et
Var olan Animal sınıfını koru. Dog sınıfına @override void speak() { print('Hav hav'); } metodunu ekle. main içinde var d = Dog(); ile örnek oluştur ve d.speak() çağrısı yap.
Başlangıç kodu
class Animal {
void speak() {
print('Ses çıkarır');
}
}
class Dog extends Animal {
Dog();
// speak metodunu @override ile yeniden tanımla
}
void main() {
// Dog() örneği oluştur ve speak() çağır
}Örnek çözüm
class Animal {
void speak() {
print('Ses çıkarır');
}
}
class Dog extends Animal {
Dog();
@override
void speak() {
print('Hav hav');
}
}
void main() {
var d = Dog();
d.speak();
}Beklenen çıktı
Hav hav
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Override parçalarını eşle
| Kavram | Anlamı |
|---|---|
@override |
Annotasyon |
speak |
Yeniden tanımlanan metot |
Dog |
Alt sınıf |
2 @override annotasyonunu ekle
class Dog extends Animal {
____
void speak() {
print('Hav hav');
}
}
class Dog extends Animal {
@override
void speak() {
print('Hav hav');
}
}
Açıklama: @override küçük harfle yazılır ve metot imzasından önce durur.
3 Animal a = Dog(); a.speak(); çağrısı ne yazdırır?
- Hav hav Doğru cevap
- Hiçbir şey
- Ses çıkarır
- Hata verir
Açıklama: Çok biçimlilik sayesinde Dog sürümü çalışır.