Süper Java'daki anahtar kelime, doğrudan ana sınıf nesnesine başvurmak için kullanılan bir referans değişkenidir.
Alt sınıfın örneğini her oluşturduğunuzda, süper referans değişkeni tarafından atıfta bulunulan bir üst sınıf örneği örtülü olarak oluşturulur.
Java süper Anahtar Kelimesinin Kullanımı
- super, doğrudan üst sınıf örnek değişkenine atıfta bulunmak için kullanılabilir.
- super, doğrudan ebeveyn sınıfı yöntemini çağırmak için kullanılabilir.
- super() doğrudan ebeveyn sınıfı yapıcısını çağırmak için kullanılabilir.
1) süper, doğrudan üst sınıf örnek değişkenine atıfta bulunmak için kullanılır.
Ana sınıfın veri üyesine veya alanına erişmek için super anahtar sözcüğünü kullanabiliriz. Ebeveyn sınıfı ve alt sınıf aynı alanlara sahipse kullanılır.
bir dizi java döndürme
class Animal{ String color='white'; } class Dog extends Animal{ String color='black'; void printColor(){ System.out.println(color);//prints color of Dog class System.out.println(super.color);//prints color of Animal class } } class TestSuper1{ public static void main(String args[]){ Dog d=new Dog(); d.printColor(); }}Şimdi Test Edin
Çıktı:
black white
Yukarıdaki örnekte, Animal ve Dog sınıflarının her ikisi de ortak özellik rengine sahiptir. Color özelliğini yazdırırsak varsayılan olarak mevcut sınıfın rengini yazdıracaktır. Ana özelliğe erişmek için super anahtar sözcüğünü kullanmamız gerekir.
2) super ebeveyn sınıfı yöntemini çağırmak için kullanılabilir
Super anahtar sözcüğü aynı zamanda ebeveyn sınıfı yöntemini çağırmak için de kullanılabilir. Alt sınıf ana sınıfla aynı yöntemi içeriyorsa kullanılmalıdır. Başka bir deyişle, yöntemin geçersiz kılınması durumunda kullanılır.
class Animal{ void eat(){System.out.println('eating...');} } class Dog extends Animal{ void eat(){System.out.println('eating bread...');} void bark(){System.out.println('barking...');} void work(){ super.eat(); bark(); } } class TestSuper2{ public static void main(String args[]){ Dog d=new Dog(); d.work(); }}Şimdi Test Edin
Çıktı:
eating... barking...
Yukarıdaki örnekte Animal ve Dog sınıflarının her ikisi de eat() metoduna sahiptir, eğer Dog sınıfından eat() metodunu çağırırsak, öncelik local'e verildiği için varsayılan olarak Dog sınıfının eat() metodunu çağıracaktır.
Ebeveyn sınıfı yöntemini çağırmak için super anahtar sözcüğünü kullanmamız gerekir.
3) super, ebeveyn sınıfı yapıcısını çağırmak için kullanılır.
Super anahtar sözcüğü aynı zamanda ana sınıf yapıcısını çağırmak için de kullanılabilir. Basit bir örnek görelim:
class Animal{ Animal(){System.out.println('animal is created');} } class Dog extends Animal{ Dog(){ super(); System.out.println('dog is created'); } } class TestSuper3{ public static void main(String args[]){ Dog d=new Dog(); }}Şimdi Test Edin
Çıktı:
animal is created dog is created
Not: super() veya this() yoksa derleyici tarafından her sınıf yapıcısına otomatik olarak super() eklenir.
İyi bildiğimiz gibi, eğer yapıcı yoksa, varsayılan kurucu derleyici tarafından otomatik olarak sağlanır. Ancak aynı zamanda ilk ifade olarak super() öğesini de ekler.
Derleyici tarafından örtülü olarak super() öğesinin sağlandığı super anahtar sözcüğünün başka bir örneği.
class Animal{ Animal(){System.out.println('animal is created');} } class Dog extends Animal{ Dog(){ System.out.println('dog is created'); } } class TestSuper4{ public static void main(String args[]){ Dog d=new Dog(); }}Şimdi Test Edin
Çıktı:
animal is created dog is created
süper örnek: gerçek kullanım
Süper anahtar kelimenin gerçek kullanımını görelim. Burada Emp sınıfı Person sınıfını miras alır, böylece Person'ın tüm özellikleri varsayılan olarak Emp'e miras alınır. Tüm özellikleri başlatmak için alt sınıftan ebeveyn sınıf yapıcısını kullanıyoruz. Bu şekilde ebeveyn sınıf yapıcısını yeniden kullanıyoruz.
class Person{ int id; String name; Person(int id,String name){ this.id=id; this.name=name; } } class Emp extends Person{ float salary; Emp(int id,String name,float salary){ super(id,name);//reusing parent constructor this.salary=salary; } void display(){System.out.println(id+' '+name+' '+salary);} } class TestSuper5{ public static void main(String[] args){ Emp e1=new Emp(1,'ankit',45000f); e1.display(); }}Şimdi Test Edin
Çıktı:
1 ankit 45000