// TestObject.java // TestObject demonstrates issues of objects and references public class TestObject { public static void main(String args[]) { Rectangle Rect1 = new Rectangle(2.0,3.0); Rectangle Rect2 = new Rectangle(4.0,5.0); Rectangle Rect3 = Rect1; Rect1.setSpans(10.0,20.0); System.out.println(Rect1.toString()); // Displays "Rect[10.0,20.]" System.out.println(Rect2.toString()); // Displays "Rect[4.0,5.0]" System.out.println(Rect3.toString()); // Displays "Rect[10.0,20.0]" ! Rect3 = Rect2; Rect1.setSpans(30.0,40.0); System.out.println(Rect1.toString()); // Displays "Rect[30.0,40.]" System.out.println(Rect3.toString()); // Displays "Rect[4.0,5.0]" ! LocatedRect LR1 = new LocatedRect(1.0, 4.0, 1.0, 3.0); Rect3 = LR1; LR1.translateDest(10.0, 20.0); System.out.println(Rect3.toString()); // LR[11.0, 15.0, 22.0, 23.0] // Note dynamic dispatching. LocatedRect LR4 = LR1.translateNonDest(10.0,20.0); System.out.println(LR1.toString()); // LR[0.0, 1.0, 0.0, 1.0] System.out.println(LR4.toString()); // LR(10.0, 11.0, 20.0, 21.0) // } // end main } // end TestObject