Java Yöntemi Geçersiz Kılma

Bu eğitimde, örnekler yardımıyla Java'da yöntemi geçersiz kılma hakkında bilgi edineceğiz.

Son derste kalıtım hakkında bilgi edindik. Kalıtım, mevcut bir sınıftan (üst sınıf) yeni bir sınıf (alt sınıf) türetmemize izin veren bir OOP özelliğidir. Alt sınıf, üst sınıfın niteliklerini ve yöntemlerini miras alır.

Şimdi, aynı yöntem hem üst sınıfta hem de alt sınıfta tanımlanırsa, alt sınıf sınıfının yöntemi, üst sınıfın yöntemini geçersiz kılar. Bu, yöntemi geçersiz kılma olarak bilinir.

Örnek 1: Yöntemi Geçersiz Kılma

 class Animal ( public void displayInfo() ( System.out.println("I am an animal."); ) ) class Dog extends Animal ( @Override public void displayInfo() ( System.out.println("I am a dog."); ) ) class Main ( public static void main(String() args) ( Dog d1 = new Dog(); d1.displayInfo(); ) ) 

Çıktı :

 Ben bir köpeğim. 

Yukarıdaki programda, displayInfo()yöntem hem Hayvan üst sınıfında hem de Köpek alt sınıfında mevcuttur.

displayInfo()D1 nesnesini (alt sınıfın nesnesi) kullanarak çağırdığımızda , Dog alt sınıfının içindeki yöntem çağrılır. Alt displayInfo()sınıfın yöntemi, süper sınıfın aynı yöntemini geçersiz kılar.

@OverrideÖrneğimizdeki ek açıklamanın kullanımına dikkat edin. Java'da ek açıklamalar, derleyiciye bilgi sağlamak için kullandığımız meta verilerdir. Burada, @Overrideek açıklama, derleyiciye bu açıklamadan sonraki yöntemin süper sınıfın yöntemini geçersiz kıldığını belirtir.

Kullanmak zorunlu değildir @Override. Ancak, bunu kullandığımızda, yöntem tüm geçersiz kılma kurallarına uymalıdır. Aksi takdirde, derleyici bir hata oluşturacaktır.

Java Geçersiz Kılma Kuralları

  • Hem üst sınıf hem de alt sınıf aynı yöntem adına, aynı dönüş türüne ve aynı parametre listesine sahip olmalıdır.
  • finalVe olarak bildirilen yöntemi geçersiz kılamayız static.
  • Her zaman süper sınıfın soyut yöntemlerini geçersiz kılmalıyız (daha sonraki eğitimlerde tartışılacaktır).

Java Geçersiz Kılmada Süper Anahtar Kelime

Java'da geçersiz kılma işlemi yapılırken ortaya çıkan yaygın bir soru şudur:

Geçersiz kıldıktan sonra süper sınıfın yöntemine erişebilir miyiz?

Cevap evet . Alt sınıftan üst sınıfın yöntemine erişmek için superanahtar kelimeyi kullanıyoruz.

Örnek 2: Süper Anahtar Kelime kullanımı

 class Animal ( public void displayInfo() ( System.out.println("I am an animal."); ) ) class Dog extends Animal ( public void displayInfo() ( super.displayInfo(); System.out.println("I am a dog."); ) ) class Main ( public static void main(String() args) ( Dog d1 = new Dog(); d1.displayInfo(); ) ) 

Çıktı :

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

Yukarıdaki örnekte, alt sınıf olan Dog displayInfo(), Animal sınıfının yöntemini geçersiz kılar .

displayInfo()Dog alt sınıfının d1 nesnesini kullanarak yöntemi çağırdığımızda, Dog alt sınıfının içindeki yöntem çağrılır; üst sınıfın içindeki yöntem çağrılmaz.

İçinde displayInfo()Köpek alt sınıfının, biz kullandık super.displayInfo()çağrısına displayInfo()superclass.

Java'daki yapıcıların miras alınmadığını unutmamak önemlidir. Bu nedenle, Java'da kurucunun geçersiz kılması diye bir şey yoktur.

Bununla birlikte, üst sınıfın yapıcısını alt sınıflarından çağırabiliriz. Bunun için kullanıyoruz super(). Daha fazla bilgi edinmek için Java süper anahtar kelimesini ziyaret edin.

Yöntemi Geçersiz Kılmada Belirticilere Erişim

Üst sınıfta ve alt sınıflarında bildirilen aynı yöntemin farklı erişim belirleyicileri olabilir. Ancak bir kısıtlama var.

Bu erişim tanımlayıcılarını yalnızca üst sınıfın erişim tanımlayıcısından daha büyük erişim sağlayan alt sınıflarda kullanabiliriz. Örneğin,

Üst sınıftaki bir yöntemin myClass()bildirildiğini varsayalım protected. Daha sonra, myClass()alt sınıftaki aynı yöntem ya publicda olabilir protected, ama olamaz private.

Örnek 3: Geçersiz Kılmada Erişim Belirteci

 class Animal ( protected void displayInfo() ( System.out.println("I am an animal."); ) ) class Dog extends Animal ( public void displayInfo() ( System.out.println("I am a dog."); ) ) class Main ( public static void main(String() args) ( Dog d1 = new Dog(); d1.displayInfo(); ) ) 

Çıktı :

 Ben bir köpeğim. 

Yukarıdaki örnekte, alt sınıf olan Dog displayInfo(), Animal sınıfının yöntemini geçersiz kılar .

displayInfo()D1'i (alt sınıfın nesnesi) kullanarak her çağırdığımızda , alt sınıfın içindeki yöntem çağrılır.

Hayvan üst sınıfında displayInfo()ilan edildiğine dikkat edin protected. Aynı yöntem, publicKöpek alt sınıfında erişim tanımlayıcısına sahiptir. Bu mümkündür çünkü publicdaha büyük erişim sağlar protected.

Soyut Yöntemleri Geçersiz Kılma

Java'da soyut sınıflar, diğer sınıfların üst sınıfı olacak şekilde oluşturulur. Ve eğer bir sınıf soyut bir yöntem içeriyorsa, onu geçersiz kılmak zorunludur.

Soyut sınıflar ve soyut yöntemlerin geçersiz kılınması hakkında daha sonraki derslerde daha fazla bilgi edineceğiz.

Ilginç makaleler...