C#

C# Metotları Aşırı Yüklemek (Method Overloading)

Merhabalar, uzun bir aradan sonra yazılara kaldığımız yerden hızlı bir şekilde devam ediyoruz. OOP’un esas konuları öncesi son yazılara geldik. Bu yazıda ise nesne programlamada önemli konulardan biri olan aşırı yükleme (overloading) olayını anlatmaya çalışacağım. Aşırı yükleme türkçe anlamından da anlaşılacağı üzere bir makineye, işçiye yapacağından daha fazla işlemi yaptırmak demektir. Programlamada da hemen hemen anlamı aynı, farkı ise, bu yükleme herhangi bir kayıp ve zarara yol açmıyor. Metotların aşırı yüklenmesi kısaca, aynı metodun farklı şekillerde tanımlanarak farklı işleri aynı anda yapabilmesidir. C#’ta aynı sınıfın içinde iki veya daha fazla metot parametre tanımlamaları farklı olması şartı ile aynı ismi taşıyabilir.Bu duruma metodun aşırı yüklenmesi (overloading) denir. Bir metodun aşırı yüklenebilmesi için farklı parametre tipi veya sayısına sahip olması gerekmektedir. Aşırı yükleme için dönüş tipinin farklı olması yeterli değildir. Ama aşırı yüklenmiş metotlar farklı veya aynı dönüş tipinde olabilirler.

Şimdi bir örnek ile konunun ayrıntılarını inceleyelim:

class OverMetot
    {
        public void OverOrnek()
        {
            Console.WriteLine("Parametre yok");
        }

        // Tek sayı parametre için aşırı yüklenen metot
        public void OverOrnek(int a)
        {
            Console.WriteLine("Bir parametresi var: " + a);
        }

        // İki parametre için aşırı yüklenen metot
        public int OverOrnek(int a, int b)
        {
            Console.WriteLine("İki int parametresi var: " + a + " " + b);
            return a + b;
        }

        // Hatalı kullanım
        /* Dönüş tiplerinin farklı olması aşırı yülenme için yeterli değildir.
        public void OverOrnek(int a)
        {
            Console.WriteLine("Parametre yok");
        }

        public int OverOrnek(int a)
        {
            Console.WriteLine("tek int parametresi var: " + a);
            return a;
        }
         */
        // Double İki parmetre için aşırı yüklenen metot
        public double OverOrnek(double a, double b)
        {
            Console.WriteLine("İki double parametresi var: " + a + " " + b);
            return a + b;
        }

        static void Main()
        {
            OverMetot ov = new OverMetot();
            int a;
            double b;

            // Tüm metotları çağırıyoruz
            ov.OverOrnek();
            Console.WriteLine();

            ov.OverOrnek(2);
            Console.WriteLine();

            a = ov.OverOrnek(3,5);
            Console.WriteLine("Toplam: " + a.ToString());
            Console.WriteLine();

            b = ov.OverOrnek(1.3, 10.5);
            Console.WriteLine("Toplam: " + b.ToString());

        }
    }

Yorum Ekle

Yorum Yap