// // still buggy (e.g. no NULL test) // import java.util.Vector; class A { public int a; public A(int i) { a = i;} public boolean equals(Object o) { return ((getClass() == o.getClass()) && equalDF(o)); } public boolean equalDF(Object o) { return (a == ((A) o).a);} } class B extends A { public int b; public B(int i, int j) {super(i); b = j;} public boolean equalDF(Object o) { return ((b == ((B) o).b) && super.equalDF(o)); } } class C extends B { public int c; public C(int i, int j, int k) {super(i,j); c = k;} public boolean equalDF(Object o) { return ((c == ((C) o).c) && super.equalDF(o)); } } public class EqualsTest5 { public static void main(String[] args) { A a1 = new A(1); B b1 = new B(1,1); C c1 = new C(1,1,1); System.out.println("a1.equals(b1) = " + a1.equals(b1)); System.out.println("a1.equals(c1) = " + a1.equals(c1)); System.out.println("b1.equals(a1) = " + b1.equals(a1)); System.out.println("b1.equals(c1) = " + b1.equals(c1)); System.out.println("c1.equals(a1) = " + c1.equals(a1)); System.out.println("c1.equals(b1) = " + c1.equals(b1)); System.out.println("a1.equals(a1) = " + a1.equals(a1)); System.out.println("b1.equals(b1) = " + b1.equals(b1)); System.out.println("c1.equals(c1) = " + c1.equals(c1)); Vector v1 = new Vector(10000); Vector v2 = new Vector(); System.out.println("v1.equals(v2) = " + v1.equals(v2)); v1.add(new Integer(1)); v1.add(new Integer(2)); v2.add(new Integer(1)); v2.add(new Integer(2)); System.out.println("v1.equals(v2) = " + v1.equals(v2)); System.out.println("v1.elementAt(0) == v2.elementAt(0) = " + (v1.elementAt(0) == v2.elementAt(0))); } }