Šta su konstruktori? Konstruktori su specijalne metode koje služe za inicijalizaciju objekata nakon njihovog kreiranja. Oni obezbeđuju da objekat ima dobro definisano početno stanje pre nego što se upotebi. Ako ne uspe inicijalizacija neće postojati objekat.

Za imenovanje konstruktora koristi se ime klase (metoda ima isto ime kao i klasa) iza koga slede zagrade.

Konstruktori nemaju povratnu vrednost, pa čak ni tipa void.

Postoje dve vrste konstruktora i to:

Kada se kreira objekat .NET kompajler, ukoliko nije eksplicitno naveden konstruktor, automatski generiše podrazumevani konstruktor

Primer, kroz koji možemo da vidimo navedene činjenice je sledeći:

class Datum
{
private int godina;
private int mesec;
private int dan;
/* public Datum () { ... } default konstruktor koji se automatski generiše pošto nije naveden konstruktor */
}
class Test
{
static void Main()
{
Datum danas = new Datum(); /* kreira se objekat i poziva konstruktor */
...
}
}

Vrlo je bitno da zapamtite osobine podrazumevanih konstruktora zbog njegove dalje upotrebe u raznim Vašim programima (koristićete ih u svakoj klasi koju napravite).

Osobine podrazumevanog konstruktora su:

  • Podrazumevani konstruktor ne prima parametre.
  • Podrazumevani konstruktor implicitno inicijalizuje sva nestatička polja na njihove podrazumevane vrednosti i to:
  1. numerička polja (int, double,decimal) na nulu
  2. logička polja na false
  3. polja referentnog tipa na null
  4. polja tipa zapis tako da su svi elementi zapisa inicijlizovani na njihove podrazumevane vrednosti.

Modifikator pristupa je public.

Konstruktor može primiti jedan ili više parametara koji se koriste za inicijalizaciju polja.

Ako se u klasi deklariše bar jedan konstruktor, kompajler neće generisati podrazumevani konstruktor.

public class Datum
{
public int godina, mesec, dan;
public Datum(int g, int m, int d)
{
godina = g;
mesec = m;
dan = d;
}
}
class Test
{
static void Main()
{
Datum danas = new Datum(2011,09,21);
}
}

Sva polja koja nisu inicijalizovana u korisnički definisanom konstruktoru zadržavaju svoju podrazumevanu inicijalizaciju.


public class Datum
{
public int godina, mesec, dan;
public Datum(int g, int m, int d)
{
godina = g;
mesec = m;
dan = d;
}
}
public class Primer
{
static void Main()
{
Datum danas = new Datum(2011, 09, 21);
Console.WriteLine(danas.godina); // ispisuje 2010
Console.WriteLine(danas.mesec); //ispisuje 9
Console.WriteLine(danas.dan); // ispisuje 21
}
}

Za jednu klasu može se definisati više konstruktora.

NAPOMENA: lista parametara svakog od njih mora biti jedinstvena, ili po broju ili po tipu parametara (odnosno moraju imati različite potpise)


Last modified: Friday, 18 October 2019, 6:00 AM