Kurssisisältö
Java OOP
Java OOP
OOP-Periaatteet: Kapselointi
Kapselointi
Toinen olio-ohjelmoinnin (Object-Oriented Programming, OOP) perusperiaate. Todennäköisesti tärkein periaate, sillä koko OOP-paradigma perustuu siihen. Olet jo kohdannut tämän periaatteen tässä luvussa määritellessäsi kenttiä ja metodeja private
- tai public
-määreillä. Nyt käsittelemme tätä periaatetta tarkemmin.
Huomio
Älä sekoita sanaa 'rajapinta' (mallipohja, kaava) siihen Interfaceen, jota käsittelemme seuraavassa osiossa!
Näkyvyysmääreet
Näkyvyysmääreet ovat olennainen osa kapselointia, joten vaikka olemme käsitelleet niitä aiemmin, meidän on syytä kerrata tämä aihe. Alla on näkyvyysmääreiden määritelmä sekä taulukko ja lyhyt kuvaus:
public
: Jäsenet, joilla onpublic
-näkyvyysmuuttuja, ovat käytettävissä mistä tahansa koodissa. Niillä on laajin näkyvyysalue. Esimerkiksipublic
-metodia voidaan kutsua mistä tahansa luokasta;private
: Jäsenet, joilla onprivate
-näkyvyysmuuttuja, ovat käytettävissä vain siinä luokassa, jossa ne on määritelty. Ne eivät ole näkyvissä ulkoisille luokille. Tämä tarjoaa vahvan kapseloinnin;protected
: Jäsenet, joilla onprotected
-näkyvyysmuuttuja, ovat käytettävissä samassa paketissa ja aliluokissa, vaikka ne olisivat eri paketeissa. Tämä mahdollistaa tiedon hallitun jakamisen;oletus (package-private): Jos näkyvyysmuuttujaa ei ole määritelty, jäsen on käytettävissä vain samassa paketissa. Tämä on oletustason näkyvyys.
Katsotaanpa, miten näkyvyysmuuttujat toimivat käytännössä. On kaksi luokkaa: toinen on luotu samaan pakettiin kuin main
-luokka, ja toinen on luotu eri pakettiin. Katsotaan, miten näkyvyysmuuttujat vaikuttavat tähän:
Kuvakaappauksissa näet, mistä muuttujat vastaavilla nimillä ovat käytettävissä.
Muistutan myös, että jos haluat ohittaa näkyvyysmuuttujat, voit lukea siitä täältä: linkki.
Huomio
On myös syytä mainita, että metodeilla voi olla näkyvyysmuuttujia. Ne toimivat samalla tavalla kuin kentillä. Esimerkiksi metodi, jolla on private-näkyvyysmuuttuja, on käytettävissä vain siinä luokassa, jossa se on luotu.
Yhteenveto
Kapselointi on erittäin hyödyllistä, kun tietoa täytyy järjestää osiin, mikä tekee koodista hyvin jäsenneltyä. Lisäksi kapseloinnin ansiosta voit määrittää, missä ja miten kenttiisi ja metodeihisi pääsee käsiksi.
1. Mitä kapselointi tarkoittaa Javassa?
2. Mikä pääsynrajoitin on tiukin?
3. Mitkä ovat kapseloinnin hyödyt?
4. Mitkä seuraavista väittämistä kapseloinnista pitävät paikkansa?
Kiitos palautteestasi!