Muutenkin saattaa tulla tilanteita, joissa luokan ulkopuolinen haluaa päästä käsiksi sisäisiin tietoihin. Ainakin lukemana niitä. Eihän ole ollenkaan tavatonta ajankaan kanssa, että joku haluaisi tietää tunnit, muttei tulostaa? Mikä ratkaisuksi? Julistetaanko kaikki attribuutit julkisiksi ( public)? No ei sentään! Kirjoitetaan saantimetodi kullekin attribuutille, jonka perustellusti voidaan katsoa tarpeelliseksi jollekin ulkopuoliselle voitavan julkaista:
"Lopullinen" versio aikaluokastamme voisikin siis olla seuraava:
public class AikaC { private int h,m; ... public int getH() { return h; } public int getM() { return m; } ... }
Huomattakoon nyt, että perinnässä ei tarvitse määritellä uudestaan saantifunktioita getH() ja getM(), ainoastaan uudet, eli esimerkissämme getS().
Nyt voitaisiin esimerkiksi kutsua:
System.out.println("Tunnit = " + a1.getH());
Mikä tässä sitten on erona attribuuttien julkaisemiseen verrattuna? Se että attribuutit ovat nyt tietyssä mielessä vain luettavissa ( read-only), eli niitä voi lukea saantimetodien avuilla, mutta niitä voi asettaa vain aseta-metodin avulla, joka taas pystyy suorittamaan oikeellisuustarkistukset ja näin olion tila ei koskaan pääse muuttumaan olion itsensä siitä tietämättä.