Welcome

首页 / 软件开发 / JAVA / 使克隆具有更大的深度

使克隆具有更大的深度2007-05-29 yycnet.yeah.net yyc译若新建一个类,它的基础类会默认为Object,并默认为不具备克隆能力(就象在下一节会看到的那样)。只要不明确地添加克隆能力,这种能力便不会自动产生。但我们可以在任何层添加它,然后便可从那个层开始向下具有克隆能力。如下所示:
//: HorrorFlick.java// You can insert Cloneability at any// level of inheritance.import java.util.*;class Person {}class Hero extends Person {}class Scientist extends Person implements Cloneable {public Object clone() {try {return super.clone();} catch (CloneNotSupportedException e) {// this should never happen:// It"s Cloneable already!throw new InternalError();}}}class MadScientist extends Scientist {}public class HorrorFlick {public static void main(String[] args) {Person p = new Person();Hero h = new Hero();Scientist s = new Scientist();MadScientist m = new MadScientist();// p = (Person)p.clone(); // Compile error// h = (Hero)h.clone(); // Compile errors = (Scientist)s.clone();m = (MadScientist)m.clone();}} ///:~
添加克隆能力之前,编译器会阻止我们的克隆尝试。一旦在Scientist里添加了克隆能力,那么Scientist以及它的所有“后裔”都可以克隆。