Przeciążanie metod

darek963

Język C# umożliwia programiście tworzenie wielu metod o tej samej nazwie w ramach jednej klasy. Aby program wiedział, której metody użyć w danym momencie, muszą one się różnić typem lub liczbą argumentów. Taki sposób tworzenia metod nazywa się przeciążaniem (ang. overloading).

Poniższy kod pokazuje jak przeciążać metody w języku C#. Proszę zwrócić uwagę, że wywołujemy tą samą metodę jakiTyp() podając inny typ lub liczbę argumentów. Za każdym razem wykonywany jest kod innej metody przeciążonej.

using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // <tworzenie obiektu>
            KlasaMetodyPrzeciazone obiekt = new KlasaMetodyPrzeciazone();
            // </tworzenie obiektu>

            // <deklaracja i inicjalizacja zmiennej>
            string zwroconaWartosc = null;
            // </deklaracja i inicjalizacja zmiennej>

            // <wywoływanie z różnymi argumentami metody przeciązonej>
            zwroconaWartosc = obiekt.jakiTyp();
            Console.WriteLine(zwroconaWartosc);

            zwroconaWartosc = obiekt.jakiTyp(123);
            Console.WriteLine(zwroconaWartosc); 

            zwroconaWartosc = obiekt.jakiTyp("123");
            Console.WriteLine(zwroconaWartosc);

            zwroconaWartosc = obiekt.jakiTyp(123.00);
            Console.WriteLine(zwroconaWartosc);

            zwroconaWartosc = obiekt.jakiTyp(123,456);
            Console.WriteLine(zwroconaWartosc);
            // </wywoływanie z różnymi argumentami metody przeciązonej>

            Console.ReadKey();            
        }
    }

    class KlasaMetodyPrzeciazone
    {
        // <metoda jakiTyp()>
        public string jakiTyp()
        {
            return "Nie podano argumentów metody";
        }
        // </metoda jakiTyp()>

        // <przeciazanie metody jakiTyp()>
        // * przeciazanie metody polega na
        // * implementacji wielu metod o tej samej nazwie
        // * ale różniących się od siebie typem lub
        // * liczbą argumentów
        public string jakiTyp(int zmienna)
        {
            return "Liczba całkowita";
        }

        public string jakiTyp(string zmienna)
        {
            return "Łańcuch znaków";
        }

        public string jakiTyp(double zmienna)
        {
            return "Liczba zmiennoprzecinkowa";
        }

        public string jakiTyp(int zmienna, int zmienna1)
        {
            return "Dwie liczby całkowite";
        }
        // </przeciazanie metody jakiTyp()>
    }
}

0 komentarzy