Programowanie w języku C#

Przeciążanie metod

  • 2006-05-22 17:56
  • 0 komentarzy
  • 5101 odsłon
  • Oceń ten tekst jako pierwszy
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()>
    }
}