使用protected修饰clone方法是为了安全考虑。
因为Object类中的clone方法是浅拷贝,如果是对象,它拷贝的只是这个对象的一个引用,而这个引用仍然指向那个对象,当我们改变这个引用的属性时,原来的对象也会跟着改变,这样其他引用也会跟着改变;
这不是我们希望看到的,但是Object类肯定做不到深拷贝,因为它不知道自定义的类里有哪些引用类型;
所以把修饰符定义为protected,这样想要在其他任何地方调用这个类的clone方法,这个类就必须去重写clone方法。
而如果不重写就调用,则会编译失败
案例:如下代码会编译错误
Class Person implements Cloneable{
}
Class Test{
public void main(String [] args) throws ClontNotSupportedException{
Person person =new