Yazan : Şadi Evren ŞEKER

Nense yönelimli programlama yaklaşımına göre çok şekilliliğin (polymorphism) bir gereği olarak bir işin birden farklı şekilde yapılabilmesini sağlayan özelliktir. Temel olarak method overloading (metod üzerine yükleme) veya operatör üzerine yükleme (operator overloading) olarak iki farklı şekilde incelenebilir.

Aşağıda bir fonksiyonun üzerine yüklenmesi (function overlaoding) örneği verilmiştir:

public class dikdörtgen{
   int en, boy;
   public dikdörtgen(){
      en=0,boy=0;
   }
   public dikdörtgen(int en, int boy){
      this.en = en;
     this.boy = boy;
   }
}

yukarıdaki örnek kodda dikdörtgen sınıfının oluşturucusu (constructor) iki kere yazılmıştır. Buna göre bir dikdörtgen oluşturulurken, bu sınıfı kullanacak olan sınıf aşağıdaki iki şekilde de oluşturabilir:

dikdörtgen d = new dikdörtgen();

dikdörtgen d = new dikdörtgen(10,15);

Yukarıdaki iki satırda bir dikdörtgen tanımlayarak bu sınıftan bir nesne oluşturmaya yaramaktadır. Sonuçta ilk satırdan sonra eni ve boyu 0 olan, ikinci satırda ise eni 10 boyu 15 olan bir dikdörtgen tanıtılmıştır.

Bu iki alternatif satır, aslında aynı objeyi iki farklı şekilde ( çok şekilli , polymorphism) olarak oluşturma imkanı sunmuştur.

Nesne yönelimli programlama dillerinde aynı fonksiyonu iki farklı şekilde çağırmak ancak parametre tiplerine veya parametre sayısına göre olabilmektedir:

int topla(int a, int b, int c){

return a + b + c;

}

int topla(int a, int b){

return a + b;

}

String topla (String a, String b){

return a + b;

}

yukarıdaki 3 fonksiyonda birbirinin üzerine yüklenmiş (overloaded) fonksiyonlardır. Bu fonksiyonlar nesne yönelimli programlama dillerinde kabul edilebilir yeniden yükleme örnekleridir. Buna göre çağrılan parametre sayısına veya tipine göre hangi fonksiyonu çağıracağını ayırt etmek mümkündür.

Ancak aşağıdaki gibi bir üzerine yükleme hatalıdır:

int topla (int a , int b){

return a + b;

}

String topla ( int a, int b){

return “” + a + b;

}

Yukarıdaki iki fonksiyonu birbirinden ayırt eden özellik döndüş tipleridir (return type) dolayısıyla bu iki fonksiyonu birbirinden ayırt etmek imkansız olabileceği için bu üzerine yükleme şekli kabul edilmemektedir.

Bir cevap yazın

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