Мне непонятен механизм клонирования нестандартного объекта. Например:
public class Main{
public static void main(String [] args) {
Person person = new Person();
person.setFname("Bill");
person.setLname("Hook");
Person cloned = (Person)person.clone();
System.out.println(cloned.getFname() + " " + cloned.getLname());
}
}
class Person implements Cloneable{
private String fname;
private String lname;
public Object clone() {
Person person = new Person();
person.setFname(this.fname);
person.setLname(this.lname);
return person;
}
public void setFname(String fname) {
this.fname = fname;
}
public void setLname(String lname){
this.lname = lname;
}
public String getFname(){
return fname;
}
public String getLname() {
return lname;
}
}
Этот пример показывает правильный способ клонирования, как написано в книгах. Но я могу удалить инструменты Cloneable в определении имени класса и получить тот же результат.
Итак, я не понимаю предложения Cloneable и почему метод clone () определен в классе Object?