rendered paste body 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