Metotları Aşırı Yükleme (Method Overload)

Lisans: Creative Commons 11.12.2020 tarihinde güncellendi
Bakabileceğiniz Etiketler: Eğitmen: Geleceği Yazanlar Ekibi

Metotları aşırı yükleme (Method Overload), bir metodun farklı sürümlerinin hazırlanmasıdır. Bu sürümler, aynı ya da farklı amaçlar ile kullanılabilir ya da farklı tiplerde değerler döndürebilir.

Overload operasyonunda aynı sayıda ve tipte parametre beklenen iki imza varsa, “Aynı imzaya sahip üye daha önce tanımlanmıştır.” uyarısı alınır, dolayısıyla derleme hatası ortaya çıkar.

Gerçek bir örnek ile devam edelim. Uzun formatta verilen bir tarih değeri ile (örneğin, 6.5.1980), sadece yıl verilerek (örneğin, 1980) gerçekleştirilecek yaş hesaplama işlemi birbirinden farklı işleme süreçlerine sahip olmak durumundadır. İlkinde, halen içinde bulunulan yıldan, verilen değerdeki yıl bulunarak çıkartılır. İkincisinde ise, içinde bulunulan yıldan, doğrudan verilen değer çıkartılabilir. Bu iki farklı hesaplama yöntemi nedeniyle, iki farklı metot gerekir. Bu metotlar aşağıdaki gibi yazılabilir:

 

int TariheGoreHesapla(DateTime tarih)
{
    int sonuc;    
    int dogumYili = tarih.Year;    
    sonuc = DateTime.Now.Year - dogumYili;    
    return sonuc;
}

 

Yukarıda kullanılan DateTime sınıfı tarih işlemlerinin oluşturulduğu sınıftır. Burada kullanılan Now.Year özellikleri mevcut tarihin yılını vermektedir.

 

int YilaGoreHesapla(int yil)
{
    int sonuc;    
    sonuc = DateTime.Now.Year - yil;    
    return sonuc;
}

 

İki metodun da asıl amacı yaşı hesaplamaktır. Bu durumda, kullanım kolaylığı amacıyla, Overload metotları aşağıdaki gibi kullanabilirsiniz:

 

int YasHesapla(DateTime tarih)
{
    int sonuc;
    int dogumYili = tarih.Year;
    sonuc = DateTime.Now.Year - dogumYili;
 
    return sonuc;
}

 

 

int YasHesapla(int yil)
{
    int sonuc;
    sonuc = DateTime.Now.Year - yil;
 
    return sonuc;
}

 

YasHesapla ismini kullanarak ve imza gereksinimlerini karşıladıktan sonra, istediğiniz sürüme erişebilirsiniz. DateTime tipinde bir değer gönderirseniz ilk metot, int tipinde bir değer gönderirseniz ikinci metot çalışacaktır. Visual Studio’da bir metodun kaç overload’u olduğu, IntelliSense yardımıyla izlenebilir ve overload’lardaki imza farklılıkları buradan gözlemlenebilir.