Hai th = new Hai(true, 10000, 1000, "Jaws"); Hai th2 = new Hai(true, 10000, 1000, "Jas"); // Katsotaan tiedot. System.out.println(th.elossa()); System.out.println(th.paino()); System.out.println(th.pituus()); System.out.println(th.lempinimi()); System.out.println(th.toString()); System.out.println(th.equals(th)); System.out.println(th.equals(th2)); //Kloonaus... System.out.println("\n"); try { Hai th3 = (Hai)th.clone(); System.out.println(th3.elossa()); System.out.println(th3.paino()); System.out.println(th3.pituus()); System.out.println(th3.lempinimi()); System.out.println(th3.toString()); System.out.println(th3.equals(th)); //Palauttaa true, koska Hai-luokassa on ylikirjoitettu equals-metodi siten, että luokan attribuutit ovat vain //vertailun kohteina. Hajautusarvot ovat kumminkin erit, koska hashCode()-metodia ei ole ylikirjoitettu asian //mukaseisti equals-metodin kanssa. Hajautusarvo viittaa muistiosoitteeseen, jossa olio sijaitsee. Oliolle voi //laskennallisesti asettaa samat hajautusarvot ylikirjoittamalla hashCode()-metodin. Tämä ei kumminkaan tarkoita //sitä, että oliot viittaisivat samaan muistiosoitteeseen. System.out.println("Kloonatun olion hajautusarvo:"+th3.hashCode()+ " Olion, josta on kloonattu:"+th.hashCode()+"\nSiirretaan th:n muistiosoite th3:lle"); th3 = th; //Siirretään th viitteen muistiosoite th3:lle. Tällöin: System.out.println("Kloonatun olion hajautusarvo:"+th3.hashCode()+ " Olion, josta on kloonattu:"+th.hashCode()); System.out.println("th3: "+th3.toString()); System.out.println("th: "+th.toString()); } catch(Exception e) { /*ignore*/ } Tuloste: true 10000.0 1000.0 Jaws Hai@130c19b true 10000.0 1000.0 Jaws true false true 10000.0 1000.0 Jaws Hai@1f6a7b9 true 10000.0 1000.0 Jaws true Kloonatun olion hajautusarvo:32942009 Olion, josta on kloonattu:19972507 Siirretaan th:n muistiosoite th3:lle Kloonatun olion hajautusarvo:19972507 Olion, josta on kloonattu:19972507 th3: Hai@130c19b true 10000.0 1000.0 Jaws th: Hai@130c19b true 10000.0 1000.0 Jaws