super
- Dart kursu
- Orta seviye
- Ders 8/116
- 5 dk
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
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
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
class Dog extends Animal {
Dog(String name) : ____(name);
}
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 |