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

İlgili Makaleler

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu