super anahtar kelimesi geçerli sınıfın atasını, ebeveynini belirtmek için kullanılır. Üst sınıfın metotlarını ve yapıcı metodunu çağırmak için kullanılır.
super anahtar kelimesinin ana amacı üst sınıf ile alt sınıf içinde yer alan aynı metot isimleri arasındaki karışıklığı gidermektir. Diğer bir kullanım amacı da, üst sınıf özelliklerine(değişkenlerine) ve metotlarına atıfta bulunmaktır.
static anahtar kelimesinin kullanımı
- Alt sınıf ve üst sınıf aynı isimde üyelere sahip olduğunda, super anahtar kelimesi ile alt sınıftan üst sınıfın üyelerine erişilebilir.
- Alt sınıf içinden üst sınıfın yapıcı metoduna erişmek için kullanılır.
- super anahtar kelimesi kullanılarak alt sınıf tarafından override edilmiş(geçersiz kılınmış) üst sınıf metoduna erişebiliriz
super anahtar kelimesini değişkenlerle birlikte kullanma
Alt sınıf ve üst sınıf aynı isimde değişkenlere sahip olduğunda dart için belirsizlik ortaya çıkar. Değişkenin alt sınıfa mı üst sınıfa mı ait olduğu belli olmaz.
Bu durumda super anahtar kelimesi kullanılarak belirsizlik giderilir.
Örnek:
super.degiskenAdi
super anahtar kelimesinin metot isimleriyle birlikte kullanımı
Eğer alt sınıf ve üst sınıf aynı isimde metoda sahipse alt sınıf içinde üst sınıfta yer alan aynı isimdeki metoda erişmek için super anahtar kelimesi kullanılır.
Örnek:
super.metotAdi()
super anahtar kelimesinin yapıcı metotlarla birlikte kullanımı
super anahtar kelimesi ile alt sınıf üst sınıfın parametreli ve parametresiz yapıcı fonksiyonunu çağırabilir.
Örnek:
sinfAdi():super();
Örnek Çalışma
class Car {
int speed = 100;
Car() {
print("Car class constructor called.");
}
void info() {
print("This is a car");
}
}
class Bike extends Car {
int speed = 90;
Bike() : super() {
print("Bike class constructor called.");
}
void info() {
print("This is a bike");
}
void display() {
print("The speed of bike :$speed");
print("The speed of car :${super.speed}");
info(); // Bike sınıfında yer alan info metodu çağrılır.
super.info(); // Üst sınıf olan Car sınıfının info metodu çağrılır.
}
}
void main() {
Bike bike1 = Bike();
bike1.display();
}