java中的对象克隆

1.Object类中的clone方法声明为protected,子类只能调用受保护的clone方法来克隆它自己的对象。必须重新定义clone为public才能允许所有方法克隆对象。
2.所有的数组类型都有一个公有的clone方法,而不是受保护的。可以用这个方法建立一个新数组,包含原数组所有元素的副本。

下面是测试用例

package com.fu.demo;

import java.util.Date;

public class myclone {
    
    
    public static void main(String[] args) throws CloneNotSupportedException {
    
    
        employee a = new employee("a", 50000,new Date());
        a.setHireDay(2000,1,1);
       employee copy= (employee) a.clone();
      //  myclone copy=(myclone) new myclone().clone();
        //Object o=new Object();
      //Object t=o.clone();
       copy.raisesalary(10);
      copy.setHireDay(2002,12,31);
        System.out.println(a);
        System.out.println(copy);
       // System.out.println(new employee() instanceof Cloneable);
        //System.out.println(copy instanceof Cloneable);
    }

}
package com.fu.demo;

import java.util.Date;
import java.util.GregorianCalendar;

public class employee implements Cloneable{
    
    
    private String name;
    private double salary;
    private Date hireDay;

    public employee() {
    
    
    }

    public employee(String name, double salary, Date hireDay) {
    
    
        this.name = name;
        this.salary = salary;
        this.hireDay = hireDay;
    }


    public employee clone() throws CloneNotSupportedException {
    
    
        employee cloned=(employee) super.clone();
        cloned.hireDay=(Date) hireDay.clone();
        return cloned;
    }

    public void setHireDay(int year,int month,int day) {
    
    
        Date newday=new GregorianCalendar(year,month-1,day).getTime();
        hireDay.setTime(newday.getTime());
    }
    public void raisesalary(double percent){
    
    
        double r=salary*percent/100;
        salary+=r;
    }

    @Override
    public String toString() {
    
    
        return "employee{" +
                "name='" + name + '\'' +
                ", salary=" + salary +
                ", hireDay=" + hireDay +
                '}';
    }
}





猜你喜欢

转载自blog.csdn.net/changbaishannefu/article/details/112310525
今日推荐