我知道使用这种克隆机制并不是一个好主意(因为它像某些作者所说的那样"破坏"),尽管我需要帮助理解它是如何工作的.我们给出了以下类层次结构:
class N implements Cloneable{
protected int num;
public N clone() throws CloneNotSupportedException{
return (N)super.clone();
}
}
class M extends N{
protected String str;
public M clone() throws CloneNotSupportedException{
M obj = (M)super.clone();
obj.setString(new String(this.str));
return obj;
}
void setString(String str){
this.str = str;
}
}
Run Code Online (Sandbox Code Playgroud)
自从N扩展后Object,如何super.clone()返回一个实例N?super.clone()实际上Object.clone()是返回对类对象的引用Object.那我们为什么能把它投到N?N有一个num不在课堂上的成员Object.默认行为如何实际设法自动克隆此变量(因为它在类中没有它的记录Object)?
此外,M也是如此.M.clone()我们将一个对象从类N(返回super.clone())转换为类的对象M.我知道所有这些都是有效的,但我不明白为什么.
| 归档时间: |
|
| 查看次数: |
159 次 |
| 最近记录: |