// File: SendInTheClones.java // The Ride class now overrides the clone() method, // allowing us to make copies of Ride objects /** * A class to represent a car. */ class Ride { // instance var's private String make ; // the make of the car (e.g., "Porsche") private String color ; // the color of the car (e.g., "pink") /** * Creates a Ride object. * @param make the make of the car * @param color the color of the car */ public Ride(String make, String color) { this.make = make ; this.color = color ; } /** * Paint a Ride object a new color. * @param newColor the new color to paint the car */ public void paint(String newColor) { color = newColor ; } /** * Convert a Ride object to a String * @return a string containing the Ride's make and color */ public String toString() { return color + " " + make ; } /** * Returns a clone (i.e. a copy) of the Ride object for which the method * is called * @return a reference to the cloned Ride object, as an Object */ public Object clone() { String color = this.color ; String make = this.make ; Ride copy = new Ride(make,color) ; return copy ; } } /** * Test class demonstrates cloning of objects */ public class SendInTheClones { public static void main (String[] args) { Ride nadine = new Ride("Cadillac", "coffee-colored") ; Ride chuck = (Ride)nadine.clone() ; System.out.println("Original ride is a " + nadine) ; System.out.println("\nCloned ride is a " + chuck) ; nadine.paint("black") ; System.out.println("\nAfter painting the original ride black...") ; System.out.println("\n...Original ride is a " + nadine) ; System.out.println("\n...Cloned ride is a " + chuck) ; } } /* program output Original ride is a coffee-colored Cadillac Cloned ride is a coffee-colored Cadillac After painting the original ride black... ...Original ride is a black Cadillac ...Cloned ride is a coffee-colored Cadillac */