class Prototype implements Cloneable { private String name; public void setName(String name) { this.name = name; } public String getName() { return this.name; } public Object clone(){ try { return super.clone(); } catch (Exception e) { e.printStackTrace(); return null; } } } class ConcretePrototype extends Prototype { public ConcretePrototype(String name) { setName(name); } } public class DS05_Prototyte { public static void main(String[] args) { Prototype pro = new ConcretePrototype("prototype"); Prototype pro2 = (Prototype)pro.clone(); System.out.println(pro.getName()); System.out.println(pro2.getName()); } }