1. STATIČKE KLASE

Statička klasa je klasa koja:

  • ne može imati objekte
  • sadrži samo statičke članove
  • koristi se za pomoćne funkcije

Deklariše se:

static class NazivKlase
{
}

Primer:

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

    public static int Oduzmi(int a, int b)
    {
        return a - b;
    }
}

Poziv:

int rezultat = Kalkulator.Saberi(5, 3);

Ne može:

Kalkulator k = new Kalkulator(); // GREŠKA

1.2 Kada koristimo statičku klasu?

  • Kada ne postoji potreba za objektom
  • Kada pravimo pomoćne metode
  • Kada pravimo konvertore, validatore, matematičke operacije

U .NET-u postoji poznata statička klasa:

System.Math

Primer:

double x = Math.Sqrt(16);

2. STATIČKE METODE (i u izvedenim klasama)

Razmotrimo sledeći primer:

class Osoba
{
    public static void PrikaziTip()
    {
        Console.WriteLine("Ovo je osoba.");
    }
}

Izvedena klasa:

class Student : Osoba
{
}

Poziv:

Student.PrikaziTip();

Statičke metode se NASLEĐUJU, ali ne učestvuju u polimorfizmu.


3. Sakrivanje(HIDING) statičkih členova

Statički članovi se NE mogu prepisati (override).

Ali mogu se sakriti pomoću ključne reči:

new

Primer:

class Osoba
{
    public static void Info()
    {
        Console.WriteLine("Osoba");
    }
}

class Student : Osoba
{
    public new static void Info()
    {
        Console.WriteLine("Student");
    }
}

Poziv:

Osoba.Info();   // Osoba
Student.Info(); // Student

VAŽNO:

Ovde nema polimorfizma. Poziv zavisi od tipa klase preko koje se metoda poziva.


Demonstracija razlike

Osoba o = new Student();

o.Info();   // Poziva Osoba.Info()

Zašto?

Zato što static metode:

  • pripadaju klasi
  • ne objektu
  • ne koriste virtual/override

4. static i virtual – u čemu je RAZLIKA?

4.1 Da li static metoda može biti virtual?

NE 

Ovo je zabranjeno:

public static virtual void Test() // GREŠKA

Zašto?

Zato što:

  • virtual metoda zavisi od objekta
  • static metoda ne pripada objektu

Polimorfizam zahteva objekat.
Static članovi postoje i bez objekta.


4.2 Uporedni primer

Virtual metoda:

class Zivotinja
{
    public virtual void Glas()
    {
        Console.WriteLine("Neki zvuk");
    }
}

class Pas : Zivotinja
{
    public override void Glas()
    {
        Console.WriteLine("Av av");
    }
}

Ovde postoji polimorfizam.

Ali kod static metoda toga nema.


5. Malo složeniji primer – KOMBINACIJA

class Vozilo
{
    public static int BrojVozila;

    public Vozilo()
    {
        BrojVozila++;
    }

    public static void Info()
    {
        Console.WriteLine("Osnovna klasa Vozilo");
    }
}

class Automobil : Vozilo
{
    public new static void Info()
    {
        Console.WriteLine("Izvedena klasa Automobil");
    }
}

Test:

Automobil a1 = new Automobil();
Automobil a2 = new Automobil();

Console.WriteLine(Vozilo.BrojVozila);  // 2

Vozilo.Info();
Automobil.Info();

6. VEŽBE 


Zadatak 1: Napraviti statičku klasu KonvertorValuta sa metodom:

  • EvroUDinare

Rešenje:

static class KonvertorValuta
{
    public static double EvroUDinare(double evro)
    {
        return evro * 117.5;
    }
}

Zadatak 2:  Napraviti osnovnu klasu Figura sa statičkom metodom Opis(). Nakon toga napraviti izvedenu klasu Krug koja sakriva tu metodu.

Rešenje:

class Figura
{
    public static void Opis()
    {
        Console.WriteLine("Osnovna figura");
    }
}

class Krug : Figura
{
    public new static void Opis()
    {
        Console.WriteLine("Krug je figura");
    }
}

7. Zadaci za samostalnu vežbu kod kuće

Zadatak 1:

Napraviti statičku klasu Validator koja:

  • proverava da li je broj pozitivan
  • proverava da li je broj paran

Zadatak 2:

Napraviti osnovnu klasu Uredjaj sa statičkim poljem:

  • BrojUredjaja

Izvedenu klasu:

  • Racunar

Testirati da li se broj povećava za svaki novi objekat.


Zadatak 3 (napredni)

Napraviti:

  • Osnovnu klasu Clanstvo
  • Statičku metodu IspisiPravila()

Izvedenu klasu PremiumClanstvo koja sakriva tu metodu.

Objasniti u komentaru zašto nema polimorfizma.


8. Bitno je da zapamtite KLJUČNE pojmove i zaključke

  1. Statička klasa ne može imati objekte.
  2. Statički članovi pripadaju klasi.
  3. Statičke metode ne učestvuju u polimorfizmu.
  4. Ne mogu biti virtual niti override.
  5. Mogu se sakriti pomoću new.
  6. Poziv zavisi od tipa klase, ne od objekta.

...

Last modified: Friday, 20 February 2026, 3:47 PM