Olioiden tyyppimuunnokset (casting) voidaan tehdä vastaavalla tavalla, mitä todettiin perustietotyyppien muunnoksista. Perustietotyyppi muunnettiin toiseksi asettamalla muunnettavan muuttujan eteen suluissa tulostyyppi. Esimerkiksi float muuttujasta x saadaan katkaisemalla luku int i -tyypiksi lauseella
i = (int) x; .
Vastaavasti olio voidaan muuttaa toiseksi olioksi. Olion luonteen vuoksi muunnosta joudutaan kuitenkin rajoittamaan toisistaan periytyviin olioihin. Eihän ole mitään järkeä muuttaa esimerkiksi luokan YhtäloPari (E39) oliosta kaneliOmenaksi (E38) tai päinvastoin. (Esimerkit viittaavat kappaleeseen 8.3)
Esimerkki
Olkoot meillä luokat työväki ja johtajisto siten, että luokka johtajisto periytyy luokasta työväki (eli luokalla johtajisto on kaikki ominaisuudet, mitä luokalla työväki plus jotain muuta). Tällöin seuraavat tyyppimuunnokset ovat mahdollisia.
työväki duunari = new työväki();
johtajisto pomo = new johtajisto();
duunari = pomo; // lause 1
pomo = (johtajisto) duunari; // lause2
Sijoituslauseessa lause 1 ei tarvitse ilmoittaa erikseen tyyppimuunnosta, koska oliolla pomo on kaikki samat ominaisuudet, mitä oliolla duunari. Ne ominaisuudet, jotka on lisätty periytettäessä johtajisto työväestä, eivät tule muuttujalle duunari, koska se kuuluu luokkaan työväki.
Sijoituslauseessa lause 2 pomo saa osoitteen olioon duunari. Nyt luokan johtajisto oliolla pomo on enemmän ominaisuuksia kuin luokan työväki oliolla duunari. Siksi olioon duunari tulee ensin liittää lisäominaisuudet, jotka liittyvät luokkaan johtajisto ja sen jälkeen tehdä sijoituslause. Muussa tapauksessa pomo jäisi ilman lisäominaisuuksia, jotka luokalle johtajisto on määritelty periytettäessä luokka johtajisto työväestä.