Kurssisisältö
Java Laajennettu
Java Laajennettu
Pääsynmäärittäjät
Pääsynmäärittäjät (access modifiers) Java-ohjelmoinnissa ovat avainsanoja, jotka määrittävät luokkien, muuttujien, metodien ja konstruktorien saavutettavuuden. Tässä lyhyt selitys neljästä pääsynmäärittäjästä:
Public
public
-määrittäjä mahdollistaa rajoittamattoman pääsyn luokkaan, muuttujaan, metodiin tai konstruktoriin. Näihin voidaan päästä mistä tahansa ohjelman osasta, myös luokan ulkopuolelta ja muista paketeista.
Private
private
-määrittäjä rajoittaa pääsyn vain samaan luokkaan. Tämä varmistaa, että jäsen ei ole käytettävissä muista luokista, mukaan lukien aliluokat ja muut paketit.
Protected
protected
-määrittäjä sallii pääsyn samaan luokkaan, aliluokkiin sekä muihin saman paketin luokkiin. Tämä tarjoaa pääsytason, joka on rajoitetumpi kuin public, mutta vähemmän rajoittava kuin private.
Package-private
Jos pääsynmäärittäjää ei ole määritelty, käytössä on oletuspääsytaso (default). Oletusmäärittäjä sallii pääsyn saman paketin sisällä, mutta rajoittaa pääsyn paketin ulkopuolelta.
Käsitellään importteja. Pääsynmäärittäjät määrittävät ensisijaisesti, mistä ohjelman osista ne voidaan tuoda käyttöön. Tarkastellaan taulukkoa, joka osoittaa, mistä pääsy voidaan saada kenttään/metodiin/luokkaan, joka on merkitty tietyllä pääsynmäärittäjällä:
Käydään läpi jokainen näkyvyysmuuttuja tarkemmin:
public
– tällä näkyvyysmuuttujalla olioon pääsee käsiksi mistä tahansa;protected
– tähän näkyvyysmuuttujaan pääsee käsiksi luokasta, jossa olio sijaitsee, paketista, jossa tämän luokan tiedosto sijaitsee, sekä aliluokista (käsittelemme näitä aiheita tarkemmin erillisessä kurssissa);package private
eli oletus – tähän näkyvyysmuuttujaan pääsee käsiksi luokasta, jossa olio sijaitsee, sekä paketista, jossa tämän luokan tiedosto sijaitsee;private
– tähän näkyvyysmuuttujaan pääsee käsiksi vain luokasta, jossa olio on luotu.
1. Mitä private
-näkyvyysmuuttuja tekee Javassa?
2. Mikä on Javan oletusnäkyvyystaso, jos näkyvyysmuuttujaa ei ole määritelty?
Kiitos palautteestasi!