1*f1fbf3c2SXin Li package sample.duplicate; 2*f1fbf3c2SXin Li 3*f1fbf3c2SXin Li import java.awt.Graphics; 4*f1fbf3c2SXin Li import java.awt.Color; 5*f1fbf3c2SXin Li 6*f1fbf3c2SXin Li public class Ball { 7*f1fbf3c2SXin Li private int x, y; 8*f1fbf3c2SXin Li private Color color; 9*f1fbf3c2SXin Li private int radius = 30; 10*f1fbf3c2SXin Li private boolean isBackup = false; 11*f1fbf3c2SXin Li Ball(int x, int y)12*f1fbf3c2SXin Li public Ball(int x, int y) { 13*f1fbf3c2SXin Li move(x, y); 14*f1fbf3c2SXin Li changeColor(Color.orange); 15*f1fbf3c2SXin Li } 16*f1fbf3c2SXin Li 17*f1fbf3c2SXin Li // This constructor is for a backup object. Ball(Ball b)18*f1fbf3c2SXin Li public Ball(Ball b) { 19*f1fbf3c2SXin Li isBackup = true; 20*f1fbf3c2SXin Li } 21*f1fbf3c2SXin Li 22*f1fbf3c2SXin Li // Adjust the position so that the backup object is visible. adjust()23*f1fbf3c2SXin Li private void adjust() { 24*f1fbf3c2SXin Li if (isBackup) { 25*f1fbf3c2SXin Li this.x += 50; 26*f1fbf3c2SXin Li this.y += 50; 27*f1fbf3c2SXin Li } 28*f1fbf3c2SXin Li } 29*f1fbf3c2SXin Li paint(Graphics g)30*f1fbf3c2SXin Li public void paint(Graphics g) { 31*f1fbf3c2SXin Li g.setColor(color); 32*f1fbf3c2SXin Li g.fillOval(x, y, radius, radius); 33*f1fbf3c2SXin Li } 34*f1fbf3c2SXin Li move(int x, int y)35*f1fbf3c2SXin Li public void move(int x, int y) { 36*f1fbf3c2SXin Li this.x = x; 37*f1fbf3c2SXin Li this.y = y; 38*f1fbf3c2SXin Li adjust(); 39*f1fbf3c2SXin Li } 40*f1fbf3c2SXin Li changeColor(Color color)41*f1fbf3c2SXin Li public void changeColor(Color color) { 42*f1fbf3c2SXin Li this.color = color; 43*f1fbf3c2SXin Li } 44*f1fbf3c2SXin Li } 45