我正在学习 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());
}
}
}