Java: määreitä – public, protected, private, static ja final

Periytymistä koskevassa artikkelissani jo sivusinkin suojausmääreitä (acces modifier), niistä on kuitenkin hyvä kirjoittaa oma tarkempi artikkelinsa. Aiheeseen kuuluu myös paketit, abstrakti luokka ja metodit sekä rajapinnat.


public, protected ja private
Suojausmääreiden avulla, metodeita ja niiden ominaisuuksia voidaan suojata ulkopuolisilta käsittelijöiltä. Määreiden avulla voidaan myös sallia tiettyjen ominaisuuksien tarkastelu ja muuntelu luokan ulkopuolelta.

// Aloitetaan luokka MunLuokka
// Koska luokka on 'public', niin sen julkisiin
// metodeihin ja muuttujiin on muilla luokilla
// pääsy
public class MunLuokka {
 public int julkinen; // tätä muuttujaa voi käsitellä suoraan luokan ulkopuolelta: MunLuokka.julkinen = 1;
 private int yksityinen; // tätä muuttujaa ei voi käsitellä luokan ulkopuolelta
 protected int protected; // tätä muuttujaa voi käsitellä vain omassa luokassaan ja niissä jotka periytyvät tästä luokasta
}

Suojausmääreet toimivat samoin myös metodien kohdalla. Onkin yleistä, että muuttujaa jonka määre on private voidaan luokan ulkopuolelta käsitellä ns. getterin ja setterin avulla. Katso myös kapselointi.

public class RajoitettuKokonaisluku {
 private int arvo; // suojataan muuttuja
 
 // setteri
 public boolean setArvo(int x) {
  if(x > 0 && x < 10) {
   arvo = x;
   return true;
  }
  return false;
 }

 // getteri
 public int getArvo() {
  return arvo;
 }
}

static
Määreellä static määrittelemme luokan tai muuttujan yhteiseksi kaikille luokasta luoduille olioille. Staattisia metodeja voi käyttää mistä tahansa muusta luokasta muodostamatta siitä ensin olioita. Esimerkiksi System.out.print() on staattinen olio jota voidaan käyttää missä tahansa luokan System nimellä.


final määreellä estämme luokan sisällön muuttamisen ja siitä periytymisen. Määreellä voi myös luoda muuttujia vakioiksi.

// luomme vakion PII
final public double PII = 3.14;

Vakiota PII voi tämän jälkeen käyttää ohjelmassa, mutta sitä ei voi enää muuttaa. Vakion käyttö on suositeltavaa niissä tapauksissa jossa tietty arvo on kaikille sama. Tällöin on turha toistaa esim. piin arvoa erikseen kaikissa luokissa ja metodeissa joissa sitä mahdollisesti tarvitaan. Ja mikäli käy niin, että huomaamme Piin arvon olevan väärin, on tuon muuttaminen ohjelmassa helppoa, kunhan vain muutamme tuota yhtä riviä.

Advertisements

Vastaa

Täytä tietosi alle tai klikkaa kuvaketta kirjautuaksesi sisään:

WordPress.com-logo

Olet kommentoimassa WordPress.com -tilin nimissä. Log Out / Muuta )

Twitter-kuva

Olet kommentoimassa Twitter -tilin nimissä. Log Out / Muuta )

Facebook-kuva

Olet kommentoimassa Facebook -tilin nimissä. Log Out / Muuta )

Google+ photo

Olet kommentoimassa Google+ -tilin nimissä. Log Out / Muuta )

Muodostetaan yhteyttä palveluun %s