Zajednički (statički) članovi klase
U okviru klase se definišu članovi: atributi i metode. Da bi pozvali neku metodu ili pak pristupili nekom atributu potrebno je znati za koju instancu klase tj. konkretni objekat se poziva metoda odnosno pristupa se atributu. Međutim, u nekim slučajevima je potrebno omogućiti pristup nekom članu a da se ne vezujemo ni za jedan konkretni objekat klase. Na primer, ako želimo da u svakom trenutku imamo evidenciju o broju kreiranih objekata neke klase potrebno je da imamo neku promenljivu čija će vrednost da se poveća za jedan svaki put kada se kreira novi objekat klase i da se smanji za jedan svaki put kada se uništi neki objekat klase. Ova promenljiva ne treba da pripada ni jednoj konkretnoj instanci klase već celoj klasi. Ovo se postiže pomoću takozvanih statičkih članova klase.
Da bi označili da je neki član statički dodaje mu se kvalifikator static.
Slična situacija je i sa metodama koje takođe mogu biti statičke. Pristup statičkom članu klase se razlikuje od pristupa običnom članu klase jer se ne zahteva objekat već se navodi samo ime klase koje sledi operator tačka i ime statičkog člana klase. Na primeru klase Automobil ilustrovaćemo način definisanja i korišćenja statičkih članova klase.
public class Automobil
{
private static int brojAutomobila = 0;
public Automobil()
{
MessageBox.Show("kreiran objekat klase Automobil");
brojAutomobila++;
}
~Automobil()
{
MessageBox.Show ("unisten objekat klase Automobil");
brojAutomobila--;
}
public static int BrojObjekata()
{
return brojAutomobila;
}
}
Klasa ima statički atribut brojAutomobila koji se povećava za jedan u telu konstruktora odnosno smanjuje za jedan u telu destruktora. Na taj način se vodi evidencija o trenutnom broju objekata klase Automobil. Statička metoda BrojObjekata() vraća vrednost promenljive brojAutomobila tj. informaciju o broju objekata. Da bi pozvali ovu metodu nije nam potreban ni jedan objekat već je dovoljno pozvati je sa imenom klase tj.
MessageBox.Show ("Broj objekata klase automobil je " + Automobil.BrojObjekata());
Napomena: U telu statičke metode ne možemo koristiti pokazivač this jer se metoda ne odnosi ni na jedan konkretni objekat te je stoga this neodređeno.