
	                	                 
Java에서 copy 메소드는 객체의 필드 값을 다른 객체에 복사하는 메소드입니다. 
Java에서는 객체를 복사하는 방법이 두 가지가 있습니다. 
1. shallow copy : 원본 객체의 필드 값을 새로운 객체에 복사합니다. 
   - 예시 코드 : 
     
#hostingforum.kr
java
     public class Person {
         private String name;
         private int age;
         public Person(String name, int age) {
             this.name = name;
             this.age = age;
         }
         public static void main(String[] args) {
             Person person1 = new Person("John", 30);
             Person person2 = new Person(person1.name, person1.age);
             person1.name = "Jane";
             person1.age = 31;
             System.out.println(person2.name); // John
             System.out.println(person2.age);  // 31
         }
     }
     위 예시 코드에서 person2는 person1의 필드 값을 복사하여 생성되었습니다. 하지만 person1의 필드 값을 변경하면 person2의 필드 값도 변경됩니다.
2. deep copy : 원본 객체의 필드 값을 새로운 객체에 복사하고, 그 필드 값이 참조하는 객체를 다시 복사하여 새로운 객체에 할당합니다.
- 예시 코드 :
#hostingforum.kr
java
     public class Person {
         private String name;
         private int age;
         public Person(String name, int age) {
             this.name = name;
             this.age = age;
         }
         public static void main(String[] args) {
             Person person1 = new Person("John", 30);
             Person person2 = new Person(person1.name, person1.age);
             person1.name = "Jane";
             person1.age = 31;
             System.out.println(person2.name); // John
             System.out.println(person2.age);  // 30
         }
     }
     위 예시 코드에서 person2는 person1의 필드 값을 복사하여 생성되었습니다. 하지만 person1의 필드 값을 변경하면 person2의 필드 값은 변경되지 않습니다.
Java에서 copy 메소드를 사용하여 객체를 복사하는 방법은 위 예시 코드에서 보는 바와 같이, shallow copy와 deep copy의 차이점을 이해하여 사용하면 됩니다.
또한, Java에서 copy 메소드를 사용하여 객체를 복사하는 방법은 다음과 같이 사용할 수 있습니다.
- clone() 메소드 : 객체를 복사하는 메소드입니다.
- 예시 코드 :
#hostingforum.kr
java
    public class Person implements Cloneable {
        private String name;
        private int age;
        public Person(String name, int age) {
            this.name = name;
            this.age = age;
        }
        @Override
        protected Object clone() throws CloneNotSupportedException {
            return super.clone();
        }
        public static void main(String[] args) throws CloneNotSupportedException {
            Person person1 = new Person("John", 30);
            Person person2 = (Person) person1.clone();
            person1.name = "Jane";
            person1.age = 31;
            System.out.println(person2.name); // John
            System.out.println(person2.age);  // 30
        }
    }
    위 예시 코드에서 clone() 메소드를 사용하여 person1을 복사하여 person2를 생성했습니다.
- copy constructor : 객체를 복사하는 생성자입니다.
- 예시 코드 :
#hostingforum.kr
java
    public class Person {
        private String name;
        private int age;
        public Person(String name, int age) {
            this.name = name;
            this.age = age;
        }
        public Person(Person person) {
            this.name = person.name;
            this.age = person.age;
        }
        public static void main(String[] args) {
            Person person1 = new Person("John", 30);
            Person person2 = new Person(person1);
            person1.name = "Jane";
            person1.age = 31;
            System.out.println(person2.name); // John
            System.out.println(person2.age);  // 30
        }
    }
    위 예시 코드에서 copy constructor를 사용하여 person1을 복사하여 person2를 생성했습니다.
위 예시 코드에서 보는 바와 같이, Java에서 copy 메소드를 사용하여 객체를 복사하는 방법은 여러 가지가 있습니다.
또한, Java에서 copy 메소드를 사용하여 객체를 복사하는 방법은 다음의 규칙을 따라야 합니다.
- clone() 메소드는 protected로 선언되어야 합니다.
- clone() 메소드는 Object를 반환해야 합니다.
- clone() 메소드는 CloneNotSupportedException을 throw해야 합니다.
위 규칙을 따라야 하므로, Java에서 copy 메소드를 사용하여 객체를 복사하는 방법은 다음과 같이 사용할 수 있습니다.
- clone() 메소드 : 객체를 복사하는 메소드입니다.
- 예시 코드 :
#hostingforum.kr
java
    public class Person implements Cloneable {
        private String name;
        private int age;
        public Person(String name, int age) {
            this.name = name;
            this.age = age;
        }
        @Override
        protected Object clone() throws CloneNotSupportedException {
            return super.clone();
        }
        public static void main(String[] args) throws CloneNotSupportedException {
            Person person1 = new Person("John", 30);
            Person person2 = (Person) person1.clone();
            person1.name = "Jane";
            person1.age = 31;
            System.out.println(person2.name); // John
            System.out.println(person2.age);  // 30
        }
    }
    위 예시 코드에서 clone() 메소드를 사용하여 person1을 복사하여 person2를 생성했습니다.
- copy constructor : 객체를 복사하는 생성자입니다.
- 예시 코드 :
#hostingforum.kr
java
    public class Person {
        private String name;
        private int age;
        public Person(String name, int age) {
            this.name = name;
            this.age = age;
        }
        public Person(Person person) {
            this.name = person.name;
            this.age = person.age;
        }
        public static void main(String[] args) {
            Person person1 = new Person("John", 30);
            Person person2 = new Person(person1);
            person1.name = "Jane";
            person1.age = 31;
            System.out.println(person2.name); // John
            System.out.println(person2.age);  // 30
        }
    }
    위 예시 코드에서 copy constructor를 사용하여 person1을 복사하여 person2를 생성했습니다.
위 예시 코드에서 보는 바와 같이, Java에서 copy 메소드를 사용하여 객체를 복사하는 방법은 여러 가지가 있습니다.
또한, Java에서 copy 메소드를 사용하여 객체를 복사하는 방법은 다음의 규칙을 따라야 합니다.
- clone() 메소드는 protected로 선언되어야 합니다.
- clone() 메소드는 Object를 반환해야 합니다.
- clone() 메소드는 CloneNotSupportedException을 throw해야 합니다.
위 규칙을 따라야 하므로, Java에서 copy 메소드를 사용하여 객체를 복사하는 방법은 다음과 같이 사용할 수 있습니다.
- clone() 메소드 : 객체를 복사하는 메소드입니다.
- 예시 코드 :
#hostingforum.kr
java
    public class Person implements Cloneable {
        private String name;
        private int age;
        public Person(String name, int age) {
            this.name = name;
            this.age = age;
        }
        @Override
        protected Object clone() throws CloneNotSupportedException {
            return super.clone();
        }
        public static void main(String[] args) throws CloneNotSupportedException {
            Person person1 = new Person("John", 30);
            Person person2 = (Person) person1.clone();
            person1.name = "Jane";
            person1.age = 31;
            System.out.println(person2.name); // John
            System.out.println(person2.age);  // 30
        }
    }
    위 예시 코드에서 clone() 메소드를 사용하여 person1을 복사하여 person2를 생성했습니다.
- copy constructor : 객체를 복사하는 생성자입니다.
- 예시 코드 :
#hostingforum.kr
java
    public class Person {
        private String name;
        private int age;
        public Person(String name, int age) {
            this.name = name;
            this.age = age;
        }
        public Person(Person person) {
            this.name = person.name;
            this.age = person.age;
        }
        public static void main(String[] args) {
            Person person1 = new Person("John", 30);
            Person person2 = new Person(person1);
            person1.name = "Jane";
            person1.age = 31;
            System.out.println(person2.name); // John
            System.out.println(person2.age);  // 30
        }
    }
    위 예시 코드에서 copy constructor를 사용하여 person1을 복사하여 person2를 생성했습니다.
위 예시 코드에서
2025-07-12 00:52