Iri*_*ina 4 java oop clone access-modifiers
这是我无法理解的.
在java.lang.Object所述clone()与定义protected改性剂.根据定义,它可以通过名称在其自己的类定义中访问,通过名称在从它派生的任何类中,并通过名称在同一个包中的任何类的定义中.
这里的Sample类在另一个包中,显然它无法clone()从Object类中访问.但是,由于Sample隐含地来源Object,为什么它无法访问它?该定义并未说明它必须满足两个条件(在同一个包内并且也是一个子类).
public class Sample {
public Object foo() throws CloneNotSupportedException {
...
return someObject.clone();
}
}
Run Code Online (Sandbox Code Playgroud)
Boz*_*zho 10
在您的情况下,该clone()方法不可见,因为您不是从子类调用它.Sample派生自Object,因此它可以访问自己的clone()方法,但不能访问其他对象的方法.
对象clone()设计有几个错误.所以使用它并不是一个好习惯 - 很难做到正确:
clone()使它公开,它仍然会失败,因为每个类都必须实现CloneableCloneable但是,没有定义任何方法,因此对象的用户不能将其称为Cloneable并期望克隆方法.super.clone()默认克隆机制才能工作检查这个问题的替代品.
| 归档时间: |
|
| 查看次数: |
6804 次 |
| 最近记录: |