Javan rakenne

 

Destruktori

(olion tuhoaminen)

Jokaisella luokalla on siis ainakin yksi alustusoperaatio eli konstruktori. Vastaavasti olion hävittämisessä tarvitaan destruktoria. Destruktori hävittää myös tarpeettomat osaoliot, joihin käytöstä poistettu olio on viitannut.

Javan lopetusoperaatio on finalize

Javassa on automaattinen roskienkeruu eli destruktoria kutsutaan automaattisesti aina kun oliota ollaan poistamassa. Lopetusoperaation suoritusajankohta ei suoraan riipu ohjelmoijan koodista vaan järjestelmästä.

Operaatio huolehtii olion varaamien tiedostojen ja muiden vastaavien resurssien vapauttamisesta. Automaattinen roskienkeruu huolehtii javassa myös osaolioiden hävittämisestä.

Finalize - operaatiota kuitenkin voidaan käyttää esimerkiksi silloin kun olion varaamat resurssit halutaan vapauttaa kuitenkaan tuhoamatta itse oliota.

Oliot syntyvät ja kuolevat järjestelmän toiminnan aikana, ne ovat siis ajoaikaisia eli dynaamisia käsitteitä toisin kuin luokat, jotka ovat staattisia eli käännösaikaisia käsitteitä.



Esim.


class Henkilo {


      Joukko valitut;


      String nimi;


      int ika;


      Henkilo (String n)  {


            nimi = n;


	   ika = 0;


	   valitut = ... ;


      }


      void tervehdi ()  {


            System.out.println(" Terve!");


      }


      void vanhene () {


		ika++;


      }


      void koetus () {


		if ( ... vastustaa kiusausta ...) valitut.lisaa (nimi);


      }


      void finalize () {


		if (valitut.kuuluu(nimi)) valitut.poista (nimi);


      }



}


 


 


 


 









Tietojenkäsittelytieteiden laitos, Informaatioteknologian
tiedekunta, Jyväskylän yliopisto