我正在學習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());
}
}
}
謝謝!我也知道PHP,所以我已經驗證了PHP的private版本實際上是以相同的方式工作的。 – 2009-06-10 15:28:49