Asa*_*ers 3 java private access-modifiers
我正在学习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());
}
}
}
Run Code Online (Sandbox Code Playgroud)
Mic*_*ers 16
该private修改并不意味着只有同一个实例可以访问域; 它意味着只有同一个类的对象才能访问它.
...如果成员或构造函数被声明为private,则当且仅当它发生在包含成员或构造函数声明的顶级类(第7.6节)的主体内时才允许访问.
换句话说,类中的任何内容都可以随时访问它.即使是嵌套类也可以访问private封闭类中的成员和构造函数,反之亦然.
(你误解它并不孤单,看看这个备受upvoted回答"什么是你的最长持有的编程假设,竟然是不正确的?)
| 归档时间: |
|
| 查看次数: |
1640 次 |
| 最近记录: |