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. Suojausmääreet toimivat samoin... Continue Reading →

Java: sisäiset, paikalliset ja nimeämättömät luokat

Sisäinen luokka (inner class) on luokka jonkin toisen luokan sisällä. Sisäisen luokan metodit ja muuttujat ovat tällöin suojattu ulkopuoliselta käytöltä mutta ne ovat kuitenkin oman ulkoisen luokkansa käytössä. Ulkoisessa luokassa on luotava olio sisäisestä luokasta jotta sen metodeihin päästään kiinni. Paikallisen luokan voi tehdä vaikka tietyn metodin tai silmukan sisään ja anonyymiä luokkaa voi käyttää... Continue Reading →

Java: olion kopioiminen

Olion kopioiminen toiselle oliolle datasisältöineen onnistuu Javalla toteuttamalla kopioitavan olion luokassa Cloneable rajapinta sekä luomalla metodi clone() metodi. Metodi clone() voisi näyttää seuraavanlaiselta: Tämän jälkeen luokasta LuokkaA voidaan lähteä luomaan kopiota: Ylläolevan ohjelman tulostus näyttäisi seuraavalta ekaOlio ihan alussa: (1, 2) tokaOlio kopionnin jälkeen: (1, 2) tokaOlio vähän myöhemmin: (2, 1) Virhetilanteessa Java ilmoittaa CloneNotSupportedException... Continue Reading →

Java: luokan koostaminen olioista

Luokan alusta rakentamisen ja perinnän lisäksi, luokan koostaminen olioista on helppo ja usein myös järkevämpi tapa. Jos ajatellaan, että on luokka MinMaxInt, jolle annetaan argumentteina pienin ja suurin sallittu kokonaisluku. Tämän jälkeen luokan setteri ei aseta liian pieniä tai isoja parametreja. Luokka sopii jonkinlaisen hahmon liikuttamiseen ruudulla? Emme halua suunnittelemamme hienon merkkipelin sankarin pystyvän liikkumaan... Continue Reading →

Java: super-viittaus

super-viittauksella voimme viitata aliluokasta yliluokan ylikirjoittamaa metodia. Esimerkiksi Yliluokan metodi voidaan ylikirjoittaa, mutta Yliluokan alkuperäistä metodia voimme kutsua Aliluokasta super-viitteen avulla super.laula("Lauletaan Yliluokassa...");. Yliluokan metodia voi kutsua myös Aliluokan metodissa joka sen ylikirjoittaa. Yleisimpiä super-viiteen käyttötapauksia lienee yliluokan konstruktorin kutsuminen. Pieni esimerkkikoodi Eclipse projektina SuperEsimerkki.zip

Java: this-viittaus

Avainsanalla this viitataan luokan olioon kun ollaan luokan sisällä. Olion kaikkiin ominaisuuksiin ja metodeihin voi luokassa viitata this-viittauksen avulla. Tämä mahdollistaa sen, että muuttujiin ja parametreihin voidaan viitata samalla nimellä. Metodien suhteen this-viittaus toimii vastaavalla tavalla.

Ohjelmoinnin perusteita: monimuotoisuus

Monimuotoisuutta (polymorphismia) voi Javassa toteuttaa esimerkiksi määrittelemällä eri luokille samannimisiä metodeja. Voimme esimerkiksi määritellä luokalle Elain metodin void aantele(String). Luokan Elain aliluokille (perintä) voidaan määritellä kullekin oma vastaavan niminen metodi joka toimii oman luokkansa mukaisesti. Java kuten muutkin oliokielet ratkaisevat tällaisten operaatioiden toteutustavan käännösvaiheessa. Tätä kutsutaan myöhäiseksi sidonnaksi. Pieni Eclipse projekti monimuotoisuudesta javalla oheisessa linkissä... Continue Reading →

Java ohjelmoinnin perusteita: periytyminen

Luokkien perintä (inherit) on erinomainen keino esimerkiksi yhdistää erilaisia luokkia toimivaksi kokonaisuudeksi. Jos on luotu esim. luokka Auto ja tarvitaan luokka Taksi on kannattavaa pohtia periytymisen käyttöä. Luokan Auto sisältämät muuttujat ja metodit todennäköisesti tarvitaan myös luokassa Taksi. Luokkaan Taksi voidaan lisäksi määritellä ko. luokan tarvitsemia lisämetodeja ja muuttujia. Luokka Taksi perii Autolta kaikki metodit... Continue Reading →

Java: abstrakti luokka

Abstraktin luokan käyttö tulee kyseeseen, kun halutaan luoda yleiskäyttöinen luokka, jonka kaikkia metodeja ei toteuteta vaan ne jätetään hoidettavaksi aliluokissa. Määreellä abstract voidaan luoda sekä abstrakti luokka, että myös metodi. Abstraktin metodin tapauksessa itse metodia ei kirjoiteta vaan määrittely päätetään puolipisteellä. Abstrakti luokka voi myös toteuttaa kaikki metodinsa, tästä huolimatta siitä ei voida suoraan luoda... Continue Reading →

WordPress.com.

Ylös ↑