Cloneable接口的使用
Cloneable接口声明中没有指定要实现的方法,一个类要实现Cloneable,最好是覆盖Object类的clone()方法。
1. 如果类没有实现Cloneable接口,调用类对象的clone方法抛出CloneNotSupportedException。
结果是:Johnny Qin 28
对于原型类型(如int),clone是没问题的,被clone的对象改变了不会影响到复制品(age还是28)。
对于引用类型(如Name),clone方法只是复制了引用(浅度就体现在这),如果改变了引用的值,复制品也会受到影响(Johnny Qin)。
4. 继承链上的祖先必须要有一个类声明实现Cloneable接口。Person person = new Person();Male male = new male();ChineseMale chineseMale = new ChineseMale();person.clone();male.clone();chineseMale.clone();
person.clone()会报错。
5. Object类本身没有实现Cloneable接口,在一个Object类对象上调用clone方法会报CloneNotSupportedException。