CodeBlanks Logo Icon CodeBlanks

super

super ile üst sınıfın yapıcısını çağırmayı öğrenirsin.

super

Alt sınıfın yapıcısı, üst sınıfın yapıcısını açıkça çağırmak zorundadır. Bu çağrı super anahtar kelimesi ile yapılır ve initializer list konumunda, yani iki noktadan sonra yazılır.

Örnek: Dog(String name) : super(name);. Burada super(name), üst sınıfın Animal(String name) yapıcısını name argümanıyla çağırır. Parametre almayan üst sınıf yapıcısı otomatik çağrılır; bu durumda super() yazmaya gerek yoktur. Parametreli üst yapıcılarda super(...) zorunludur ve initializer list'in ilk konumunda durur.

super ve initializer list

super(...) çağrısı initializer list'in parçasıdır. Hem alan ataması hem de super çağrısı gerekiyorsa ikisi virgülle birleştirilir; super listenin sonunda durur.

Örnek: Puppy(String name, int age) : age = age, super(name);. Burada age = age alt sınıfın kendi alanını, super(name) üst sınıfın yapıcısını çağırır. İki noktadan sonra ikisi de virgülle ayrılır. Bu yapı, hem alt sınıf alanlarını başlatıp hem de üst yapıcıya veri aktarmayı sağlar; sıra gözetilmelidir.

Uygulama Dog yapıcısına super ekle

Var olan Animal sınıfını koru. Dog sınıfına Dog(String name) : super(name); yapıcısını ekle. main içinde var d = Dog('Karabaş'); ile örnek oluştur ve print(d.name) çağrısı yap.

Başlangıç kodu

main.dart
class Animal {
  String name;
  Animal(this.name);
}

class Dog extends Animal {
  // super(name) çağrısı içeren yapıcı ekle
}

void main() {
  // Dog örneğini oluştur ve d.name yazdır
}

Örnek çözüm

main.dart
class Animal {
  String name;
  Animal(this.name);
}

class Dog extends Animal {
  Dog(String name) : super(name);
}

void main() {
  var d = Dog('Karabaş');
  print(d.name);
}

Beklenen çıktı

Karabaş

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 super çağrısını tamamla

Soru
class Dog extends Animal {
  Dog(String name) : ____(name);
}
Cevap
class Dog extends Animal {
  Dog(String name) : super(name);
}

Açıklama: super, üst sınıfın yapıcısını çağırır.

2 super(name) ne yapar?

  • Yeni bir üst sınıf örneği oluşturur
  • name alanını gizler
  • Alt sınıfa name alanı ekler
  • Üst sınıfın yapıcısını name argümanıyla çağırır Doğru cevap

Açıklama: super(name), üst sınıf yapıcısını name ile çağırır.

3 super parçalarını eşle

Kavram Anlamı
super Üst sınıf referansı
: Initializer list başlangıcı
name Argüman

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