代码如下:
package qaq;
public class qaq30 {
public static void main(String[]args){
Clockrrr cobj = new Clockrrr();
cobj.setClock(22, 11, 10);
System.out.println(cobj); //显示引用变量
System.out.println(cobj.toString());//转成字符串
System.out.println(cobj.getClass().getName());//取得对象cobj的类名
Clockrrr cobj2 = cobj;
System.out.println(cobj == cobj2);//检测引用是否相同
System.out.println(cobj2.equals(cobj));//检测两个对象内容是否相同
System.out.println(cobj.hashCode());//显示对象cobj的哈希码
System.out.println(cobj2.hashCode());//显示对象cobj2的哈希码
try {
Clockrrr cobj3 = (Clockrrr)cobj.clone();//克隆一个和cobj一样的对象
System.out.println(cobj.toString());//检查克隆对象的内容是否相同
}catch(CloneNotSupportedException e){};
}
}
class Clockrrr implements Cloneable{ //自动继承Object类,实现接口Cloneable
private int hour;
private int minute;
private int second;
public void setClock(int x,int y,int z){
hour = x; minute = y; second = z;
}
public void showClock(){
System.out.print(hour+":"+minute+":"+second);
}
public String toString(){ //重写tostring方法
return String.format("Clock@%d:%d:%d",hour,minute,second);
}
public int hashCode(){//重写方法并生成哈希码
return hour*10000+minute*100+second;
}
public boolean equals(Object obj){//重写方法equals()
if((obj instanceof Clockrrr)==false)//类型不同直接返回false
return false;
Clockrrr c = (Clockrrr)obj;//将object型转换成clockrrr型
return c.hour == hour;//比较时
}
public Object clone() throws CloneNotSupportedException //重写方法clone()
{
Clockrrr c = (Clockrrr)super.clone(); return c;// 克隆一个钟表对象
}
}