CodeBlanks Logo Icon CodeBlanks

Override

@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

main.dart
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

main.dart
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

Soru
class Dog extends Animal {
  ____
  void speak() {
    print('Hav hav');
  }
}
Cevap
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.

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