Понимание Object.clone () в Java
Я знаю, что использование этого механизма клонирования не очень хорошая идея (так каксломанный» как предлагают некоторые авторы), хотя мне нужна помощь, чтобы понять, как это работает. Мы'дается следующая иерархия классов:
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;
}
}
посколькуN
продолжаетсяObject
какsuper.clone()
вернуть экземпляр?N
super.clone()
на самом делеObject.clone()
который возвращает ссылку на объект классаObject
, Почему мы можем использовать его?N
N
имеет членаnum
это не в классеObject
, Как поведению по умолчанию удается автоматически клонировать эту переменную (поскольку она не имеет записи об этом в классеObject
)?
Кроме того, то же самое касается М. ВM.clone()
мы'повторное приведение объекта из классаN
(возвращаетсяsuper.clone()
) к объекту классаM
, Я знаю, что все это действительно, но я не понимаю, почему.