Tarih :15 Aralık 2019

Method Overloading Nedir?

Metot aşırı yükleme bir sınıf içerisinde aynı isme fakat farklı imzaya (kabul edeceği parametrelerin tipi, sayısı, sırası) sahip metot tanımlanması olarak ifade edilebilir. Bu daha önce yapılandırıcı aşırı yüklemeden (constructor overloading) aşina olduğumuz bir özelliktir. Sonuçta yapılandırıcı da nesne oluşturma esnasında çağrılan, bir değer döndürmese de tipi (void) belirtilmeyen özel bir metottu.

Aşağıdaki örnekte formatDuzenle isminde, farklı imzalara sahip (farklı tiplerde parametre kabul eden) üç metot tanımlanmıştır.

Çıktılar sırayla :

550
45,67
22,530

olacaktır.

Aşağıdaki örnekte ise aynı sınıfta aynı metot ismi kullanılarak 5 farklı imza ile farklı biçimde yazılmıştır. Burada en alttaki iki metotta görüldüğü üzere metodun kabul ettiği parametreler aynı sayıda ve tipte olsa da, sırası farklı ise (char,String ve String,char gibi) farklı metot imzası(method signature) elde edilir.  

Çıktılar sırayla :

4.6
H
Merhaba
*Dünya
!Hello World

olacaktır.

Aşağıdaki örnekte, dört alanı (örnek değişkeni) olan ve yapılandırıcısı verilmiş sınıfı ele alalım. Bu sınıfta double bir değer döndüren ve parametre kabul etmeyen fiyatHesapla() metodu yorum satırlarında istenenlere göre yazılmıştır.

Bu örnekte indirimli fiyat, standart fiyat üzerinde bir yüzde indirim değeri uygulanarak bulunmak isteniyor. Bunun için Araba sınıfı içerisinde fiyatHesapla isimli başka bir metot daha tanımlayalım. Bu metot parametre olarak yuzdeIndirim isimli bir double değişken kabul ediyor olsun.

Buna göre bu yeni tanımladığımız metot içerisinde standart fiyatı bulmak için aynı işlemleri bir kez daha yapmak yerine fiyatHesapla() veya this.fiyatHesapla() şeklinde) diğer metodu çağırabiliriz. Bu ortak işlevler için aynı kodu kopyala – yapıştır yapmak yerine daha etkin bir çözümdür.

Yeni örnekte sadece sadikMusteri boolean değerinin bilgisi ile sadık müşteri için standart fiyattan 5000 lira düşülmüş fiyatı hesaplayan bir metot isteniyor. Bunun için de parametre olarak boolean sadikMusteri değişkenini kabul edecek biçimde metot aşırı yükleme yapılabilir.

Burada da standart fiyatı  elde etmek için aşırı yükleme yaptığımız(ilk yazdığımız parametresiz) metodu çağırabiliriz.

Örnekte son olarak hem sadikMusteri değeri hem de yuzdeIndirim değeri ile göre sadık müşteri için indirimli fiyattan 5000 lira düşülmüş fiyatı hesaplayan bir metot isteniyor.

Bunun için iki parametre kabul edecek şekilde aşırı yükleme yapılabilir.

Model2016
Km43000
yuzdeIndirim2.5
sadikMusteritrue

Tanımladığımız dört metodu yukarıdaki tabloya göre oluşturulan araba nesnesi üzerinden çağırırsak programın çıktısı aşağıdaki gibi olacaktır.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir