Java’da Overloading vs Overriding

sametklou

Java’da Overloading vs Overriding

Java programlama dilinde sıkça karşılaşılan ve kafa karıştıran konulardan biri Overloading ve Overriding kavramlarıdır. Bu yazıda, bu iki kavramı detaylı bir şekilde inceleyeceğiz ve aralarındaki farkları açıklayacağız.

Overloading Nedir?

Overloading, aynı isimde fakat farklı parametrelerde bir veya daha fazla metodun tanımlanmasıdır. Yani bir sınıfta aynı isme sahip birden fazla metot olabilir, ancak parametre sayıları veya tipleri farklı olmalıdır.

Örnek bir Java kodu:

public class Matematik {

    public int topla(int a, int b) {
        return a + b;
    }

    public double topla(double a, double b) {
        return a + b;
    }
}

Yukarıdaki örnekte, Matematik sınıfında topla isimli iki farklı metot bulunmaktadır. Birisi int tipinde parametre alırken diğeri double tipinde parametre almaktadır. Bu durumda, Java derleyici hangi metotun hangi durumda çağrılacağını parametrelerin tiplerine bakarak belirler.

Overriding Nedir?

Overriding, bir üst sınıftaki metodu alt sınıfta aynı isimde ve imzada (parametrelerin sayısı ve tipleri aynı) olacak şekilde tekrar tanımlamaktır. Yani bir alt sınıf, üst sınıftan aldığı metodu kendi ihtiyaçları doğrultusunda değiştirebilir.

Örnek bir Java kodu:

public class Sekil {
    
    public void ciz() {
        System.out.println("Bir şekil çizildi.");
    }
}

public class Daire extends Sekil {
    
    @Override
    public void ciz() {
        System.out.println("Bir daire çizildi.");
    }
}

Yukarıdaki örnekte, Sekil sınıfındaki ciz metodu Daire sınıfında @Override anahtar kelimesi ile tekrar tanımlanmıştır. Böylece Daire sınıfı, Sekil sınıfından aldığı ciz metodu üzerine kendi özelleştirilmiş versiyonunu oluşturmuştur.

Overloading vs Overriding Arasındaki Farklar

  • Overloading, aynı isimde farklı parametreler ile farklı metotların tanımlanmasıdır.
  • Overriding, bir üst sınıftan miras alınan metodu alt sınıfta aynı isimde ve imzada tekrar tanımlamaktır.
  • Overloading derleme zamanında belirlenirken, Overriding çalışma zamanında bağlama ile belirlenir.

Java'da Overloading ve Overriding konuları oldukça önemlidir ve doğru şekilde kullanılmalıdır. Bu kavramların anlaşılması, programlamada daha etkili ve verimli bir şekilde kod yazmanıza yardımcı olacaktır.