Son Haberler
Anasayfa / Yazılım / C# / Metotların Overload Edilmesi

Metotların Overload Edilmesi

Bazen kodlanmış bir uygulama içerisinde aynı sınıf içerisinde yer alan ayn isme sahip metotlar görürürüz. Bu metotların birbirinden farkları parametreleridir. İçerdikleri parametre sayısı, parametrelerin tipleri ve hatta bu parametrelerin sıraları bile bir metot için çok ama çok önemlidir. İşte aynı sınıf içinde yer alan metotların aynı isme sahip olanlarının parametrelerine göre birbirinden ayrılmaları durumu aslında o metotların overload edilme durumudur. Bir metodun birden fazla overload edilmiş hali bulunabilir. C# uygulaması derlendiğinde bir metodu çağırdığında bu metodun hangi versiyonunun yani hangi overload edilmiş versiyonunun çağırılacağını alacağı / aldığı parametrelere göre anlar. Buna göre ilgili metodun overload edilmiş ilgili versiyonu kullanılır. Genellikle aynı işlemi yapmak istediğimiz metotlarda bir takım ufak değişikliklerin olabilme ihtimaline karşı ilgili metotları overload edebiliriz. Şöyle düşünelim diyelim ki toplama işlemi yapacağız. Toplama işlemini 2 değişkenle de yapabiliriz. Bir metodumuz olur, 3 değişkenle de yapabiliriz ikinci metodumuz olur. Veya string toplama yapmak isteriz üçüncü metodumuz olur. Görüleceği üzere aynı işlemi kullanılacak parametre sayısına göre, hatta tipini ve hatta tiplerin sırasına göre oluşturmak istediğimiz de aynı metodun overload edilmiş versiyonlarını oluştururuz.

Örneğin .NET’te Min ve Max metotlarının 11’er adet overload edilmiş versiyonları bulunmaktadır. Mesela basit bir örnek yapalım. Örneğimde KareAl metodum olsun. Bu metodum için hem int tipinde hemde double tipinde veri alan iki versiyon olsun. Yani iki adet aynı isimde metot olacak. .NET’te bir console application açtım ve kodlarımı aşağıdaki gibi yazıyorum.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication15
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("5 tam (int tipinde) sayısının karesi {0}", KareAl(5));
            Console.WriteLine("5,5 ondalıklı (double tipinde) sayısının karesi {0}", KareAl(5.5));

            Console.ReadLine();
        }
        //metodumun int tipindeki kullanımı
        public static int KareAl(int SayiIntTipi)
        {
            Console.WriteLine("Karesi alınacak int tipindeki tam sayı {0}",SayiIntTipi);
            return SayiIntTipi * SayiIntTipi;
        }
        //metodumun double tipi için kullanımı
        public static double KareAl(double SayiDoubleTipi)
        {
            Console.WriteLine("Karesi alınacak double tipindeki ondalıklı sayı {0}", SayiDoubleTipi);
            return SayiDoubleTipi * SayiDoubleTipi;
        } 
    }
}

Üstte görüleceği üzere main metodum içinde karesi alınacak sayıları sabit olarak verdim. Burada aynı metot üzerinde görüleceği üzere hem int tipinde hemde double tipindeki sayı için hesaplama yaptım. Görüleceği üzere overload edilmiş versiyonlarını kullanıyorum. .NET iki aynı isimdeki metodlar için bu şekilde overload edildiklerinde onların nasıl çalıştırılacağını yazımın başında da belirttiğim üzere alacağı parametre sayısı yani alacağı değişkenlerin sayısı diyebiliriz, bu değişkenlerin tipleri ve hatta bunların sıralamaları ile algılar. Buna göre ilgili metodun hangi overload edilmiş versiyonunun kullanılacağına karar verir.

Bir cevap yazın

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