class Coin3 { String name; int val; Coin3(String name, int val) { this.name=name; this.val=val; } public String toString() { return name + "=" + val + "$ (hashcode = " + hashCode(); } public boolean equals(Object obj) { if (obj==null) return false; if (getClass() != obj.getClass()) return false; Coin3 otherCoin = (Coin3)obj; return (otherCoin.name.equals(name) && otherCoin.val==val); } public static void main(String [] args) { Coin3 a = new Coin3("toonie",2); Coin3 b = new Coin3("toonie",2); Coin3 c = new Coin3("loonie",1); Coin3 d = a; String s = "Hello"; System.out.println("a: " + a); System.out.println("b: " + b); System.out.println("c: " + c); System.out.println("d: " + d); System.out.println("s: " + s); System.out.print("a.equals(b) " + a.equals(b)); System.out.println(" a==b " + (a==b)); System.out.print("a.equals(c) " + a.equals(c)); System.out.println(" a==c " + (a==c)); System.out.print("a.equals(d) " + a.equals(d)); System.out.println(" a==d " + (a==d)); System.out.println("a.equals(s) " + a.equals(s)); //System.out.println(" a==s " + (a==s)); "incomparable types" System.out.println("a.getClass() " + a.getClass()); System.out.println("s.getClass() " + s.getClass()); } }