Поља класе

Поља класе представљају атрибуте класе којима описујемо стања која желимо да сачувамо у току извршавања програма. Поља дефинишемо увек у оквиру класе користећи следећи шаблон:


vidljivost TipPodatka naziv_polja;

Када користимо термин видљивост, мислимо на то где одговарајућа променљива, односно, поље класе, сме да се користи. Постоје три резервисане речи које описују видљивост: public, private и protected.

Уколико је променљива декларисана са public то значи да је она јавна и да може свугде да јој се приступи, унутар било које класе и методе.

Уколико је променљива декларисана са private то значи да та поља могу да користе само методе које се налазе у истој класи. Она се у другим методама неће видети.

Уколико је променљива декларисана са protected то значи да тим пољима могу приступити само методи из класе, као и методи који су изведени из тренутне класе, о чему ће касније бити речи. Видљивост је такође једна од особина класе, најчешће ће класе које будемо формирали у наредним примерима бити public, као и њихови методи.

Ovo je Java Applet napravljen u GeoGebri sa www.geogebra.org - izgleda da nemate instaliranu Javu; molim otvorite www.java.com
Анимација 9.8. Видљивост

*У случају да се анимација не приказује, притиснути дугме Прикажи слику




Напомена: Тамо где је видљива променљива са ознаком protected, ту су видљиве и променљиве са ознакама private и public. Тамо где је видљива променљива са ознаком private, ту је видљива и променљива са ознаком public. Променљива са ознаком public је увек видљива, али ако њу можемо видети, то не значи да ћемо видети и променљиве које су означене са private и protected.


Направићемо класу Datum и на њој ћемо објаснити поља класе.

class Datum
{
    //Polja klase Datum. Vidljivost svih polja je public
    public int dan;
    public int mesec;
    public int godina;
    //Konstruktor. Neophodan je da bismo kreirali objekat tipa Datum. 
    public Datum(int dan, int mesec, int godina)
    {
        //Pomocu pokazivaca this pristupamo poljima klase 
        this.dan = dan;
        this.mesec = mesec;
        this.godina = godina;
    }
    //Metod koji kreiramo bice public, dakle, moze se primeniti svugde, i u klasi Form1
    public string rodjendan(int dan, int mesec)
    {
        return "Vas rodjendan je " + dan + "." + mesec + ".";
    }
    //Metod koji kreiramo bice public, dakle, moze se primeniti svugde, i u klasi Form1
    public string prestupna (int godina)
    {
        if (godina % 4 == 0 && godina % 100 != 0)
            return "Godina u kojoj ste rodjeni je prestupna";
        else
            return "Godina u kojoj ste rodjeni nije prestupna";
    }    
}

У овом примеру креирали смо класу у којој сваки објекат има три поља - dan, mesec и godina. Сва поља декларисана су као public. Класа сама по себи не садржи никакве податке већ само описује структуру података кроз нека поља. Објекти су конкретни подаци и садрже конкретне информације. Структура информација у објектима дефинисана је у структури класе. Сада када смо описали класу могуће је креирати објекат који има структуру дефинисану у класи и поставити вредности поља.

У наведеном коду имамо и конструктор, помоћу кога можемо креирати објекте класе Datum. Тада приликом креирања објекта типа Datum имамо конструктор коме можемо одмах да проследимо дан, месец и годину, и одмах постављaмо поља на одређене вредности. То је илустровано у наредном примеру.


//Kreiramo datum pomoću konstruktora iz klase
Datum d = new Datum(dan, mesec, godina);  

Такође, у случају да нисмо дефинисали конструктор, увек постоји подразумевани конструктор.


Kreiramo objekat pomocu podrazumevanog konstruktora
Datum d = new Datum();  
//Postavljamo vrednosti polja
d.dan = 13;
d.mesec = 5;
d.godina = 1988;

У том случају, када конструктор није дефинисан, објекат смо креирали помоћу подразумеваног конструктора. Вредности поља су у овом случају постављена помоћу оператора тачка.