BETA
Aby się zalogować, najpiew wybierz portal.
Aby się zarejestrować, najpiew wybierz portal.
Podaj słowa kluczowe
Słowa kluczowe muszą mieć co najmniej 3 sąsiadujące znaki alfanumeryczne
Pole zawiera niedozwolone znaki

Aktualności


Przeładowania

16-12-2013 16:32 Konrad Tomczyk
przeladowania

 A więc czasem będziesz potrzebował napisać w C# taką metodę która nie różni się zbytnio działaniem od innej metody tylko pobiera inne parametry. O.K na pewno z tych dwudziestu trzech wyrazów które napisałem wcześniej nic nie rozumiesz -  to normalne, puki co. Ale aby temu zapobiec, spróbujemy to jakoś obrazowo przedstawić. Wyobraź sobie, że piszesz klasę matematyczną, w tej klasie zawrzesz metodę o nazwie Kwadrat, która to pobiera parametr jakąś liczbę poczym zwraca nam jej kwadrat, ta metoda ma pobierać wszystkie możliwe liczbowe zmienne, wygląda na to że byś musiał tworzyć taki zapis:
public int Kwadrat_int(int a)
{
return a * a ;
}

public double Kwadrat_double(double a)
{
return a * a ;

}

I tak dalej…

W taki zapisie, podczas wywoływania metody jest bardzo łatwo o pomyłkę, jeszcze tym bardziej może się zdarzyć jeżeli ty nie do  końca decydujesz która metoda ma zostać wywołana, jeżeli jest wszystko pod kontrolą programu, należy tak go napisać, aby on sam wiedział jaki typ ma wybrać metody. A więc nasza klasa będzie wyglądać następująco:
class Matematyka
{

public int Kwadrat(int a)
{
return a * a ;
}

public double Kwadrat(double a)
{
return a * a ;
}

 

}

Co tutaj zrobiliśmy? A więc na pierwszy rzut oka może ci się wydawać że popełniliśmy błąd. A jednak nie, otóż nie popełniliśmy błędu ponieważ nasze metody pobierają różne parametry, mimo tego że mają takie same nazwy to nie błąd, program podczas wykonywania po prostu sam zdecyduje jaką metodę wybrać podczas wywołania metody Kwadrat.
Matematyka t1 = new Matematyka() ;
int a = t1.Kwadrat(10);

Jeżeli byś my napisali np. Console.WriteLine(„Liczba” + t1.Kwadrat(10)); lub Console.WriteLine(„Liczba” + t1.Kwadrat(167.8904)): nie było by żadnego błędu, ponieważ w czasie rzeczywistym program sam decyduje jaką metodę wybrać. To jest bardzo pomoce, jak zauważysz w dalszych lekcjach.

Nie możesz sobie od tak nagle zaraz pisać wszystkich metod z taką samą nazwą, jest właściwie jedna zasada której to musisz się trzymać, otóż czy to metoda czy konstruktor przeładowywane one muszą się różnić od siebie pobieranymi parametrami! I tylko tym, nie ma na to wpływu typ zwracany. Np. jeżeli byś napisał:
class Matematyka
{

public int Kwadrat(int a)
{
return a * a ;
}

public double Kwadrat(int a)
{
return a * a ;
}

}

To jest błąd, ponieważ metody i inne składniki przeładowywane muszą się różnić typem pobieranych parametrów lub ich ilością, np. prawidłowe jest takie wykonanie metody:


class Matematyka
{

public int Kwadrat(int a)
{
return a * a ;
}

public double Kwadrat(int a, int b)
{
Console.WriteLine(„B wynosi”+b);
return a * a ;
}

}

Komentarze 0

pkt.

Zaloguj się lub Zarejestruj się aby wykonać tę czynność.