Merhaba arkadaşlar, bugün sizlere C# metot aşırı yükleme (method overloading) konusunu anlatacağım. Method overloading, aynı isimli fakat farklı parametreli metotları tanımlayabilme özelliğidir. Bu sayede, aynı işlevi farklı şekillerde gerçekleştiren metotları tek bir isim altında toplayabiliriz. Örneğin, bir hesap makinesi uygulaması yazdığımızı düşünelim. Bu uygulamada, toplama işlemi yapan bir metot tanımlayalım.
static int Topla(int a, int b) {
return a + b;
}
Bu metot, iki tane int tipinde parametre alarak, bunların toplamını döndürür. Fakat, biz bu metodu sadece int tipinde değil, double tipinde de kullanmak isteyebiliriz. Bu durumda, method overloading özelliğini kullanarak, aynı isimli fakat farklı parametreli bir metot daha tanımlayabiliriz.
static double Topla(double a, double b) {
return a + b;
}
Bu metot da, iki tane double tipinde parametre alarak, bunların toplamını döndürür. Şimdi, bu iki metodu kullanarak, farklı tiplerdeki sayıları toplayabiliriz.
Console.WriteLine(Topla(3, 5)); // int tipindeki sayıları toplar ve 8 yazdırır.
Console.WriteLine(Topla(3.5, 4.2)); // double tipindeki sayıları toplar ve 7.7 yazdırır.
Gördüğünüz gibi, aynı isimli fakat farklı parametreli metotları çağırarak, istediğimiz işlevi gerçekleştirebildik. Method overloading özelliği, kodun okunabilirliğini ve yeniden kullanılabilirliğini arttırır. Ayrıca, farklı isimlerdeki metotları hatırlamak zorunda kalmayız.
Method overloading yaparken dikkat etmemiz gereken bazı kurallar vardır. Bunlar:
- Aynı isimli metotların parametre sayısı veya tipleri farklı olmalıdır. Yani sadece dönüş tipi farklı olan metotlar tanımlayamayız.
- Aynı isimli metotların parametre sayısı ve tipleri aynı fakat sırası farklı olabilir. Bu durumda, metotları çağırırken parametre isimlerini belirtmemiz gerekir.
- Aynı isimli metotların erişim belirleyicileri (public, private, protected vb.) veya modifiyerleri (static, virtual, abstract vb.) farklı olabilir.
Umarım bu yazı sizin için faydalı olmuştur. Soru ve görüşlerinizi yorum kısmında paylaşabilirsiniz. Bir sonraki konuda görüşmek üzere.
C# ile ilgili diğer yazılarım için: C# – Bizneyapiyoruzki