1. Uvod

Kada pravimo više objekata iste klase, svaki objekat ima svoje vrednosti atributa (polja) i može da poziva metode definisane u klasi.

Međutim, postavlja se pitanje:

👉 Da li baš svi članovi klase moraju da pripadaju pojedinačnom objektu?
👉 Da li postoji nešto što je zajedničko svim objektima iste klase?

Odgovor je: da.

U C# jeziku takvi članovi nazivaju se zajednički članovi klase ili statički članovi (static).


2. Šta su zajednički (static) članovi klase?

Zajednički članovi su članovi koji:

  • ne pripadaju pojedinačnom objektu
  • pripadaju samoj klasi
  • dele se između svih objekata

Deklarišu se pomoću ključne reči:

static

Na primer:

class Ucenik
{
    public string Ime;
    public static string NazivSkole;
}

U ovom primeru:

  • Ime pripada svakom učeniku posebno
  • NazivSkole je zajednički za sve učenike

Ako promenimo NazivSkole, promena važi za sve objekte.


3. Razlika između običnih i zajedničkih članova

Obični član Zajednički (static) član
Pripada objektu Pripada klasi
Svaki objekat ima svoju kopiju Postoji samo jedna kopija
Poziva se preko objekta Poziva se preko imena klase

Primer:

Ucenik u1 = new Ucenik();
Ucenik u2 = new Ucenik();

u1.Ime = "Marko";
u2.Ime = "Jovan";

Ucenik.NazivSkole = "Tehnička škola";

Kako se koristi:

Ucenik.NazivSkole

NE:

u1.NazivSkole   // nije preporučeno

4. Kada koristimo zajedničke članove?

Zajedničke članove koristimo kada:

  • Vrednost treba da bude ista za sve objekte
  • Želimo da brojimo objekte
  • Želimo pomoćne metode koje ne zavise od konkretnog objekta
  • Kada pravimo globalne postavke klase

5. Primer 1 – Brojanje objekata

Zadatak: Napraviti klasu koja broji koliko je objekata napravljeno.

class Automobil
{
    public string Marka;
    public static int BrojAutomobila;

    public Automobil(string marka)
    {
        Marka = marka;
        BrojAutomobila++;
    }
}

U glavnom programu:

Automobil a1 = new Automobil("Audi");
Automobil a2 = new Automobil("BMW");
Automobil a3 = new Automobil("Opel");

Console.WriteLine("Ukupno automobila: " + Automobil.BrojAutomobila);

Objašnjenje:

  • Svaki put kada se napravi objekat
  • Konstruktor se izvršava
  • Povećava se zajednički brojač

Rezultat:

Ukupno automobila: 3

Postoji samo jedna promenljiva BrojAutomobila za celu klasu.


6. Primer 2 – Zajednička metoda

Statičke metode takođe postoje.

Primer:

class Matematika
{
    public static int Saberi(int a, int b)
    {
        return a + b;
    }
}

Poziv:

int rezultat = Matematika.Saberi(5, 3);
Console.WriteLine(rezultat);

Ovde nije potrebno praviti objekat klase Matematika.


7. Jako je bitno da zapamtite jedno važno pravilo

Statička metoda NE MOŽE da koristi nestatičke članove.

Neispravno bi bilo:

class Test
{
    public int Broj;

    public static void Prikazi()
    {
        Console.WriteLine(Broj);  // Greška!
    }
}

Zašto?

Zato što statička metoda ne zna na koji objekat se odnosi.

Ispravno bi bilo:

class Test
{
    public static int Broj;

    public static void Prikazi()
    {
        Console.WriteLine(Broj);
    }
}

8. Statički konstruktor

Klasa može (a ne mora) imati i statički konstruktor.

On se izvršava:

  • samo jednom
  • pre kreiranja prvog objekta
  • automatski

Primer:

class Firma
{
    public static string Naziv;

    static Firma()
    {
        Naziv = "Moja Firma";
        Console.WriteLine("Statički konstruktor izvršen.");
    }
}

9. Vežbe  


Zadatak 1:   Napraviti klasu Radnik koja ima polje Ime, ima statičko polje UkupanBrojRadnika, i svaki put kada se napravi objekat povećava brojač

Rešenje:

class Radnik
{
    public string Ime;
    public static int UkupanBrojRadnika;

    public Radnik(string ime)
    {
        Ime = ime;
        UkupanBrojRadnika++;
    }
}

Zadatak 2: Napraviti klasu Konvertor sa statičkom metodom koja pretvara kilometre u metre.

Rešenje:

class Konvertor
{
    public static double KmUMetre(double km)
    {
        return km * 1000;
    }
}

Poziv:

Console.WriteLine(Konvertor.KmUMetre(5));

10. Složeniji primer (u cilju razumevanje razlike)

class Proizvod
{
    public string Naziv;
    public static double PDV = 0.20;

    public double CenaSaPDV(double cena)
    {
        return cena + cena * PDV;
    }
}

Ako promenimo:

Proizvod.PDV = 0.10;

Promena važi za sve proizvode.


11. Tipične greške

  1. Pokušaj pristupa statičkom članu preko objekta
  2. Korišćenje nestatičkog polja unutar statičke metode
  3. Mešanje pojma „zajedničko“ sa „public“

Zajedničko ≠ javno
Zajedničko znači da pripada klasi, a ne objektu.


12. Zadaci za domaći

Zadatak 1: 

Napraviti klasu Student koja:

  • ima ime

  • ima statičko polje NazivFakulteta

  • omogućava promenu naziva fakulteta


Zadatak 2

Napraviti klasu Kalkulator sa statičkim metodama:

  • Saberi

  • Oduzmi

  • Pomnozi

  • Podeli


Zadatak 3 (napredni)

Napraviti klasu Porudzbina koja:

  • ima broj porudžbine

  • ima statičko polje koje automatski generiše sledeći broj porudžbine

...

Poslednja izmena: петак, 20. фебруар 2026, 15:33