Java süper Anahtar Kelimesi (Örneklerle)

Bu eğitimde, örnekler yardımıyla Java'daki süper anahtar kelimeyi öğreneceğiz.

superJava anahtar kelime erişmenizi üst sınıf üyeleri (nitelikler, yapıcılar ve yöntemlere) altsınıflarda kullanılır.

superAnahtar kelimeyi öğrenmeden önce , Java kalıtımını bildiğinizden emin olun.

Süper anahtar kelimenin kullanımları

  1. Alt sınıfta geçersiz kılınan üst sınıfın yöntemlerini çağırmak için.
  2. Hem üst sınıfın hem de alt sınıfın aynı ada sahip özniteliklere sahip olması durumunda, üst sınıfın özniteliklerine (alanlarına) erişmek için.
  3. Alt sınıf yapıcısından süper sınıf no-arg (varsayılan) veya parametreleştirilmiş yapıcıyı açıkça çağırmak için.

Bu kullanımların her birini anlayalım.

1. Üst sınıfın Geçersiz Kılınan Yöntemlerine Erişim

Aynı ada sahip yöntemler hem üst sınıfta hem de alt sınıfta tanımlanırsa, alt sınıftaki yöntem üst sınıftaki yöntemi geçersiz kılar. Buna yöntemi geçersiz kılma denir.

Örnek 1: Yöntemi geçersiz kılma

 class Animal ( // overridden method public void display()( System.out.println("I am an animal"); ) ) class Dog extends Animal ( // overriding method @Override public void display()( System.out.println("I am a dog"); ) public void printMessage()( display(); ) ) class Main ( public static void main(String() args) ( Dog dog1 = new Dog(); dog1.printMessage(); ) ) 

Çıktı

 ben bir köpeğim 

Bu örnekte, Dog sınıfının dog1 nesnesini yaparak, daha sonra display()ifadeyi yürüten printMessage () yöntemini çağırabiliriz .

Yana display()iki sınıf tanımlanır, alt köpek gibi bir yöntem üst sınıf Animal yöntemini geçersiz kılar. Bu nedenle, display()alt sınıfın adı verilir.

Ya süper sınıfın geçersiz kılınan yönteminin çağrılması gerekirse?

Biz kullanmak super.display()geçersiz kılınan yöntem ise display()üst sınıf Hayvan ihtiyaçlarının çağrılacak.

Örnek 2: Süper Sınıf Yöntemini Çağırmak için süper

 class Animal ( // overridden method public void display()( System.out.println("I am an animal"); ) ) class Dog extends Animal ( // overriding method @Override public void display()( System.out.println("I am a dog"); ) public void printMessage()( // this calls overriding method display(); // this calls overridden method super.display(); ) ) class Main ( public static void main(String() args) ( Dog dog1 = new Dog(); dog1.printMessage(); ) ) 

Çıktı

 Ben bir köpeğim ben bir hayvanım 

İşte yukarıdaki programın nasıl çalıştığı.

2. Süper Sınıfın Özelliklerine Erişim

Üst sınıf ve alt sınıf aynı ada sahip niteliklere sahip olabilir. superÜst sınıfın özelliğine erişmek için anahtar kelimeyi kullanırız.

Örnek 3: Üst sınıf özelliğine erişim

 class Animal ( protected String; ) class Dog extends Animal ( public String; public void printType() ( System.out.println("I am a " + type); System.out.println("I am an " + super.type); ) ) class Main ( public static void main(String() args) ( Dog dog1 = new Dog(); dog1.printType(); ) ) 

Çıktı :

 Ben bir memeliyim ben bir hayvanım 

Bu örnekte, hem Animal üst sınıfta hem de Dog alt sınıfında aynı örnek alan türünü tanımladık.

Daha sonra Dog sınıfından dog1 nesnesini oluşturduk. Daha sonra printType()bu nesne kullanılarak yöntem çağrılır.

İçinde printType()fonksiyonu,

  • type, Dog alt sınıfının niteliğini ifade eder.
  • super.type, Animal sınıfının niteliğini ifade eder.

Bu nedenle, System.out.println("I am a " + type);ben bir memeliyim. Ve System.out.println("I am an " + super.type);ben bir hayvanım baskılar.

3. Süper sınıf oluşturucusuna erişmek için süper () kullanımı

Bildiğimiz gibi, bir sınıfın bir nesnesi oluşturulduğunda, varsayılan kurucusu otomatik olarak çağrılır.

Üst sınıf yapıcısını alt sınıf yapıcısından açıkça çağırmak için kullanıyoruz super(). superAnahtar kelimenin özel bir biçimi .

super() yalnızca alt sınıf yapıcısının içinde kullanılabilir ve ilk ifade olmalıdır.

Örnek 4: super () kullanımı

 class Animal ( // default or no-arg constructor of class Animal Animal() ( System.out.println("I am an animal"); ) ) class Dog extends Animal ( // default or no-arg constructor of class Dog Dog() ( // calling default constructor of the superclass super(); System.out.println("I am a dog"); ) ) class Main ( public static void main(String() args) ( Dog dog1 = new Dog(); ) ) 

Çıktı

 Ben bir hayvanım ben bir köpeğim 

Burada, Dog sınıfının dog1 nesnesi oluşturulduğunda, otomatik olarak o sınıfın varsayılan veya no-arg yapıcısını çağırır.

Alt sınıf yapıcısının içinde super()ifade, üst sınıfın yapıcısını çağırır ve içindeki ifadeleri yürütür. Dolayısıyla, ben bir hayvanım çıktısı elde ederiz.

Programın akışı daha sonra alt sınıf yapıcısına geri döner ve kalan ifadeleri yürütür. Böylece ben bir köpeğim basılacak.

Ancak kullanmak super()zorunlu değildir. super()Alt sınıf yapıcısında kullanılmasa bile , derleyici örtük olarak üst sınıfın varsayılan yapıcısını çağırır.

Öyleyse, derleyici otomatik olarak super () 'i çağırıyorsa neden artık kod kullanalım?

Eğer gerekli parametreli kurucu (argüman alan bir kurucu) üst sınıfın alt sınıf yapıcısı çağrılacak gelmiştir.

Parametrelendirilmiş super()her zaman alt sınıfın yapıcısının gövdesindeki ilk ifade olmalıdır, aksi takdirde derleme hatası alırız.

Örnek 5: super () Kullanarak Parametreli Oluşturucuyu Çağırma

 class Animal ( // default or no-arg constructor Animal() ( System.out.println("I am an animal"); ) // parameterized constructor Animal(String type) ( System.out.println("Type: "+type); ) ) class Dog extends Animal ( // default constructor Dog() ( // calling parameterized constructor of the superclass super("Animal"); System.out.println("I am a dog"); ) ) class Main ( public static void main(String() args) ( Dog dog1 = new Dog(); ) ) 

Çıktı

 Tür: Hayvan Ben bir köpeğim 

Derleyici otomatik olarak no-arg yapıcısını çağırabilir. Ancak, parametreleştirilmiş kurucular çağıramaz.

Parametreli bir kurucunun çağrılması gerekiyorsa, onu alt sınıf yapıcısında açıkça tanımlamamız gerekir.

Yukarıdaki örnekte, parametreleştirilmiş kurucuyu açıkça adlandırdığımıza dikkat edin super("Animal"). Derleyici, bu durumda üst sınıfın varsayılan yapıcısını çağırmaz.

Ilginç makaleler...