Clonación de objetos en java

1. El método de clonación en la clase Object se declara como protegido, y la subclase solo puede llamar al método de clonación protegida para clonar su propio objeto. Debe redefinir clonar como público para permitir que todos los métodos clonen objetos.
2. Todos los tipos de matrices tienen un método de clonación público, no protegido. Puede utilizar este método para crear una nueva matriz que contenga una copia de todos los elementos de la matriz original.

A continuación se muestra el caso de prueba

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 +
                '}';
    }
}





Supongo que te gusta

Origin blog.csdn.net/changbaishannefu/article/details/112310525
Recomendado
Clasificación