由于Java中的每个类都从Object扩展而来,因此它应该具有clone方法,但仍然被迫重写clone
不,您没有被迫重写该
clone方法。在继承中,当您继承一个类时,您不必强制重写它的方法。其修饰符是公开的或受保护的并没有多大区别。但是,如果要直接在
super类引用上调用方法,则该方法必须为
public。受保护的方法只能通过继承访问。也就是说,您只能通过
subclass引用访问它们。或者,如果您覆盖该方法,则可以通过
super关键字访问它们。
话虽如此,您不应该
clone按原样重写method
broken。因为,对于要克隆的类,您需要实现
Cloneable接口。然后您的班级改用class的
clone方法
Object。因为,
Cloneableinterface确实没有用于的任何方法
cloning。改用它会是一个更好的选择
CopyConstructor。
public class A { private int data; public A() { } public A(A a) { this.data = a.data; }}有关更多详细信息,我建议您阅读本章“
Joshua Bloch's有效的Java”,其中涵盖了使用
clone方法的所有方面。
有效的Java-
项目#11-明智地覆盖克隆



