1、Object类中的方法
protected Object clone() //负责对象克隆
boolean equals(Object obj) //判断两个对象是否相等
int hashCode() //获取对象哈希值的一个方法
String toString()//将对象转换成字符串形式
protected void finalize() //垃圾回收器负责调用的方法
2、protected Object clone();
(1)clone使用方法
Person p1 = new Person(23,"男");
Person p2 = (Person) p1.clone();
//因为clone返回值的是Object类型,所以在这里需要做强制类型转换
(2)新建类时,需要重写clone()方法,覆盖掉继承自父类Object的clone()方法,同时,因为父类Object中clone()方法是protected修饰的,因此在子类中需要更高一级修饰,及public。
public Object clone() throws CloneNotSupportedException {
return super.clone();
}
(3)被克隆的类必须实现Cloneable接口,否则会出现CloneNotSupportedException异常,Cloneable接口的唯一作用是在类型检查中通过instanceof检查。
(4)clone方法执行的是浅拷贝,在编写程序时要注意这个细节。(浅拷贝只拷贝引用地址,深拷贝拷贝底层对象)
public class Review06Object_clone {
public static void main(String[] args) throws CloneNotSupportedException {
Person p1 = new Person(23,"男");
Person p2 = (Person) p1.clone();
System.out.println(p1);//com.bjpowernode.javase.review.Person@5594a1b5
System.out.println(p2);//com.bjpowernode.javase.review.Person@6a5fc7f7
}
}
class Person implements Cloneable{
int year;
String sex;
public Person() {
}
public Person(int yrar, String sex) {
this.year = yrar;
this.sex = sex;
}
public Object clone() throws CloneNotSupportedException {
return super.clone();
}
}