Clone():
protected Object clone()
throws CloneNotSupportedException
返回的是一个object类型的对象,所以在定义函数时函数的返回值类型应该定义为object类型。
Object类本身不实现接口 Cloneable,所以在类为 Object的对象上调用 clone方法将会导致在运行时抛出异常。
package com.object;
publicclass Demo1 {
/**
* @param args
*/
publicstaticvoid main(String[] args) {
// TODOAuto-generated method stub
Person p = new Person("tom",22);
Object p1 = p.show();//多态创建对象。P是子类对象,p1是父类引用。
System.out.println(p1);//输出的结果是对象的信息(com.object.Person@15db9742)
Person p2 = (Person)p.show();//强转,调用子类的属性
System.out.println(p2.name);//输出的结果是:tom
}
}
package com.object;
publicclass Person implements Cloneable {
String name;
intage;
Person(){
}
Person(String name,int age){//有参构造方法
this.name = name;
this.age = age;
}
public Objectshow(){//因为show方法中使用了clone方法,而clone方法的返回值是object类型,所以show方法的返回值类型也是object。
try {
Object p1 = this.clone();//this指代当前调用对象,谁调用的,就把谁clone一份,复制给一个新的对象,这个新的对象的类型是object。即地址是不同的。相当于是两个对象,但是他们的name,age都是相同的。
return p1;
} catch (CloneNotSupportedException e) {
// TODOAuto-generated catch block
e.printStackTrace();
}
returnnull;
}
}