일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 자바코딩
- 코딩독학
- 자바메서드오버로딩
- 코딩기초
- 코딩
- 기초코딩
- this참조변수
- 자바클래스
- 2차원배열
- 산술연산자
- 프로그래밍
- C++코딩
- 비트연산자
- 자바코드
- 1차원배열
- 반복문
- 메서드오버로딩
- C++
- 포인터연산자
- 조건문
- 부동소수점
- 제어문
- 변수
- 클래스선언
- C++상수
- 포인터
- 증감연산자
- Java
- 고정소수점
- 자바
- Today
- Total
지식아일랜드
코딩 기초 26편 _ Java 자바 코딩 Object clone() 메소드 본문
Java Object의 clone() 메소드
clone() 메소드는 객체의 복제본을 생성하는데 사용됩니다.
객체 복제는 기존 객체의 속성을 그대로 가진 새로운 객체를 만들 때 유용합니다.
다음은 Java Object의 clone() 메소드를 이해하기 위한 예제 코드입니다.
class Student implements Cloneable {
private String name;
private int age;
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public void display() {
System.out.println("이름: " + name);
System.out.println("나이: " + age);
}
@Override
public Object clone() throws CloneNotSupportedException {
return super.clone();
}
}
public class Main {
public static void main(String[] args) {
try {
Student student1 = new Student("홍길동", 20);
Student student2 = (Student) student1.clone();
student1.display();
student2.display();
System.out.println("student1과 student2는 동일한 객체인가요? " + (student1 == student2));
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
}
}
위의 코드에서 Student 클래스는 Cloneable 인터페이스를 구현하고 있습니다.
이는 clone() 메서드를 사용하기 위한 필수 조건입니다.
Student 클래스에는 name과 age라는 두 개의 멤버 변수와 생성자, display() 메서드가 있습니다.
display() 메서드를 해당 학생의 이름과 나이를 출력합니다.
clone() 메서드는 Object 클래스에서 상속받은 메서드를 재정의합니다.
clone() 메서드는 super.clone()을 호출하여 현재 객체의 복제본을 반환합니다. 이 때, CloneNotSupportedException 예외를 처리해야 합니다.
Main 클래스에서는 Student 객체의 복제를 확인하기 위해 main() 메서드를 사용합니다.
먼저 student1 객체를 생성하고, clone() 메서드를 사용하여 student2 객체를 복제합니다.
그런 다음 student1과 student2 객체의 정보를 출력하고, 두 객체가 동일한 객체인지 확인하기 위해 참조 비교를 수행합니다. 결과적으로 student1과 student2는 별개의 객체이므로 false가 출력됩니다.
이 코드를 실행하면 원본 객체를 복제한 새로운 객체를 얻을 수 있습니다. 이를 통해 객체의 속성을 변경해도 다른 객체에는 영향을 주지 않습니다. clone() 메소드를 사용하면 객체의 깊은 복사를 수행할 수 있습니다.
참고로, clone() 메서드는 Cloneable 인터페이스를 구현하지 않은 클래스의 인스턴스에서 호출하면 CloneNotSupportedException 예외가 발생합니다. 따라서 복제 가능한 클래스를 작성할 때에는 Cloneable 인터페이스를 구현한 클래스의 인스턴스에서 호출하여야 합니다.
'JAVA 기초' 카테고리의 다른 글
코딩 기초 28편 _ JAVA 자바 코딩 클래스(Class)의 개념과 예제 (0) | 2023.06.10 |
---|---|
코딩 기초 27편 _ JAVA 자바 코딩 객체 지향 프로그래밍(OOP, Object-Oriented Programming) (0) | 2023.06.06 |
코딩 기초 25편 _ JAVA 자바 코딩 배열의 복사(Array 클래스의 copyOf 메소드) (0) | 2023.05.25 |
코딩 기초 24편 _ JAVA 자바 코딩 배열의 복사(System 클래스의 arraycopy()메소드) (0) | 2023.05.20 |
코딩 기초 23편 _ JAVA 자바 코딩 다차원 배열(multi-dimensional array)과 2차원 배열(two dimensional array) (0) | 2023.04.24 |