/**
 * This is to check out cloning and super.clone() in particular.
 * See further notes in CloneTest.java
 *
 * @author Bob Futrelle
 * @version 1.0 7/12/2002
 *
 */
 
public class ToClone implements Cloneable {
	
	int field;
	
	public ToClone simpleCloneMe() throws CloneNotSupportedException {
		return (ToClone)super.clone(); // use default
		} // simpleCloneMe()

	public ToClone fancyCloneMe() throws CloneNotSupportedException {
		return (ToClone)this.clone(); // use clone() override below
		} // fancyCloneMe()
	
	// creates new object, no clone exception needed.
	public ToClone goryCloneMe() {
	
		ToClone me = new ToClone();
		me.field = this.field + 3; // alter field value slightly in new instance
		return me;
		}
		
	// override the default cloning method
	protected Object clone() throws CloneNotSupportedException {
	
		ToClone me = null;
		me = (ToClone) super.clone();
		me.field = 99;
		return me;
		
	} // clone()	
	
	void showField() {
		System.out.println(field);
		}
		
}