我正在学习 Java,我正在阅读的书中有以下关于克隆的示例。在clone(),我的第一个实例能够在新对象上设置缓冲区,即使缓冲区是private. 似乎它应该要求该字段才能protected正常工作。
为什么允许这样做?是否clone()具有允许它访问private字段的特殊权限?
public class IntegerStack implements Cloneable {
private int[] buffer;
private int top;
// ... code omitted ...
@Override
public IntegerStack clone() {
try{
IntegerStack nObj = (IntegerStack) super.clone();
nObj.buffer = buffer.clone();
return nObj;
} catch (CloneNotSupportedException e)
{
throw new InternalError(e.toString());
}
}
}