Dart super Anahtar Kelimesi
Dart dilinde super anahtar kelimesi üst sınıf nesnesini çağırmak için kullanılır. Bir alt sınıf örneği oluşturduğumuzda, üst sınıfının bir örneği örtük olarak oluşturulur ve buna super anahtar sözcüğünü kullanarak ulaşabiliriz.
Super anahtar sözcüğü, hem ebeveyn hem de alt sınıf aynı ada sahip üyeye sahip olduğunda, üst sınıfın veri üyelerine erişmek için kullanılabilir.
Benzer şekilde, alt sınıf bu yöntemi geçersiz kıldığında, üst sınıfın yöntemine erişmek için kullanılabilir.
Ayrıca üst sınıfın varsayılan veya parametreli kurucu metodunu çağırmak için kullanılabilir.
Üst sınıf değişkenlerine erişmek için kullanımı
Dart super anahtar kelimesi, halihazırda alt sınıfın zaten üst sınıfında bulunan bir değişkeni olduğunda, üst sınıftaki değişkene erişmek için kullanılabilir.
class Ana
{
int numara = 50;
}
class Evlat extends Ana
{
/* ÜSt sınıfta zaten tanımlı olan değişken
* alt sınıfta kullanılmak için çağrıldı
*/
int numara = 100;
void yeniNumara(){
print(super.numara);
}
}
void main()
{
Evlat nesne= Evlat();
nesne.yeniNumara();
}
Çıktı: 50
Yukarıdaki örnekte super anahtar kelimesini kullanmasaydık 50 yerine alt sınıfımızdaki değer olan 100 sayısını elde edecektik.
Üst sınıf metodunu çağırmak için
Bir alt sınıf, üst sınıfta zaten mevcut olan bir yöntemi içeriyorsa, buna metodu ezme (geçersiz kılma) denir. Alt sınıf nesnesinden yönteme yapılan çağrıyı geçersiz kılmak, her zaman metodunun alt sınıf sürümünü çağırır. Ancak, super anahtar sözcüğünü kullanarak, yöntemin üst sınıf sürümünü çağırmamıza izin verilir.
class Ana
{
void bilgi()
{
print("Üst sınıf metodu çalıştı.");
}
}
class Evlat extends Ana
{
//Metot ezildi
void bilgi()
{
print("Alt sınıf metodu çalıştı.");
}
void bilgiVer()
{
//Bu, alt sınıf metodunu çağırır
bilgi();
//Bu, üst sınıf yöntemini çağırır
super.bilgi();
}
}
void main()
{
Evlat nesne= Evlat();
nesne.bilgiVer();
}
Çıktı:
Alt sınıf metodu çalıştı.
Üst sınıf metodu çalıştı.
Tabi şunu da belirtmek gerekir ki alt sınıf, üst sınıf metodunu geçersiz kılmadığında, üst sınıf yöntemini çağırmak için süper anahtar kelimeyi kullanmaya gerek yoktur.
Dart super kurucu metodu
Bir alt sınıf, değişkenleri ve yöntemleri üst sınıfından devralır, ancak üst sınıf kurucu metodunu alt sınıfta miras alamaz. Üst sınıf kurucu metotlarını alt sınıfta çağırabilmek için super() kullanılır. Böylelikle super() kurucu metodu ile, bir alt sınıf yapıcısının, üst sınıfın bağımsız değişkensiz ve parametreli kurucusunun çağrılmasına izin verir.
Eğer üst sınıftaki kurucu metot argümanlar alıyorsa, o zaman üst sınıfın parametreli hale getirilmiş kurucusunu çağırmak ve istenen argümanları iletmek için alt sınıf kurucusunda parametrelileştirilmiş super() metodunu kullanmamız gerekir. Bunu da :super yazarak sağlayabiliriz:
main() {
Bilgi x = Bilgi("Brad", 20);
x.kendiniTanit();
Eleman y = Eleman("Tom", 30, 4000);
y.kendiniTanit();
}
class Bilgi
{
String isim;
int yas;
Bilgi(this.isim, this.yas);
void kendiniTanit()
{
print("Üst sınıfın kurucu metodu çalıştı");
print("Benim adım $isim ve yaşım $yas");
}
}
class Eleman extends Bilgi
{
int maas;
// super ile ortak değerleri miras aldık
Eleman(String name, int age, this.maas) : super(name, age);
@override
void kendiniTanit()
{
print("Benim adım $isim, yaşım $yas ve maaşım $maas dolar");
}
}
Çıktı:
Üst sınıfın kurucu metodu çalıştı
Benim adım Brad ve yaşım 20
Benim adım Tom, yaşım 30 ve maaşım 4000 dolar