개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.07.12 00:51

copy 메소드 이해에 도움을 부탁드립니다.

목록
  • DNS마스터 11일 전 2025.07.12 00:51 인기
  • 106
    1
제가 공부 중인 Java 프로그래밍에서 copy 메소드를 사용하여 객체를 복사하는 방법에 대해 궁금합니다.

copy 메소드의 동작을 이해하지 못해서, 정확한 복사 방법을 모르겠습니다.

해당 메소드의 동작 방식에 대해 자세히 설명해주시거나, 예시 코드를 제공해주실 수 있을까요?

    댓글목록

    profile_image
    나우호스팅  11일 전



    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

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 38,163건 / 98 페이지

검색

게시물 검색