Konstruktory w języku C#

Konstruktor - pierwsza metoda.


Konstruktor jest to specjalna metoda klasy, która jest wywoływana jako pierwsza podczas tworzenia obiektu. Konstruktor ma taką samą nazwę jak nazwa klasy i nie zwraca żadnych wartości. Klasa może posiadać wiele konstruktorów jednak muszą się one różnić typem lub ilością argumentów. Konstruktor jest wywoływany za pomocą wyrażenia new podczas tworzenia obiektu. Konstruktor bardzo często wykorzystywany jest do inicjowania elementów obiektu.

Przykładowy konstruktor:

public class Pojazd
{
    public Pojazd()
    {
    //ciało konstruktora
    }
}
Konstruktor możemy stworzyć przy pomocy snippetu: ctor. Wpisujemy słowo ctor a następnie klikamy dwukrotnie klawisz: tab.

Konstruktor domyślny jest to konstruktor, który zostaje utworzony w przypadku nie zdefiniowania żadnego konstruktora.

Właściwości konstruktora domyślnego:

  • posiada modyfikator dostępu public,
  • nie posiada argumentów,
  • inicjuje wartości pół klasy zerem, false lub null w zależności od typu pól,
  • ma taka samą nazwę jak nazwa klasy,
  • nie zwraca wartości.

Przeciążanie konstruktorów

Podobnie jak metody, konstruktory mogą być przeciążane. Aby przeciążyć konstruktor wystarczy stworzyć kilka konstruktorów różniących się liczba parametrów lub typem przyjmowanych parametrów.

Inicjacja pól klasy

Konstruktor zajmuje się inicjacją pól składowych klasy. W przypadku, gdy pola nie zostaną zainicjowane żadnymi wartościami w konstruktorze, domyślnie zostanie im przypisana domyślna wartość, czyli np. 0.

Metody inicjacji pól:

Metoda 1 (przez parametry):
class Liczba
{
    private int a, b, c;
 
    public Liczba(int a, int b, int c)
    {
        this.a = a;
        this.b = b;
        this.c = c;
    }
}
Metoda 2 (przez wartości domyślne):
class Liczba
{
    private int a, b, c;
 
    public Liczba()
    {
        a = 1;
        b = 2;
        c = 3;
    }
}

Inicjacja poprzez listę inicjacyjną

Możliwe jest wywołanie innego konstruktora w miejsce konstruktora domyślnego, nazywamy takie rozwiązanie listą inicjacyjną. Konstruktor bezparametrowy, który wywoływany jest podczas tworzenia obiektu sam wywołuje konstruktor z parametrami domyślnymi.

Przykład:

class Liczba
{
    private int a, b, c;
 
    public Liczba() : this(1,2,3)
    {
    }
 
    public Liczba(int a, int b, int c)
    {
        this.a = a;
        this.b = b;
        this.c = c;
    }
}

Kolejność wywoływania konstruktorów:

  • konstruktory klas bazowych w kolejności w jakiej są dziedziczone (na początku konstruktor klasy bazowej dla wszystkich pozostałych dziedziczących klas, na końcu konstruktor naszej aktualnej klasy),
  • konstruktory dla obiektów zadeklarowanych w ciele klasy,
  • konstruktor klasy.

Więcej na temat konstruktorów:

http://msdn.microsoft.com/pl-pl/library/ace5hbzh.aspx
Komentarze facebook (polub nasz profil na FB aby je zobaczyć):