package example.cloning;

public class Hero implements Cloneable {
	String name;
	Weapon mainWeapon;
	public Hero(String name) {
		this.name = name;
	}
	public Object clone() throws CloneNotSupportedException {
		Hero hero = (Hero) super.clone();  // This is a shallow copy from super.clone().
		Weapon newWeapon = (Weapon) hero.mainWeapon.clone();  // Create a copy of the weapon with its own cloning method.
		hero.mainWeapon = newWeapon;  // Set it to this newly created weapon.
		return hero;
	}
}
