단, String, Integer 클래스
는 미리 재정의 되어 있어서 출력 값이 다름
equals()
를 재정의하여 논리적으로 같은 인스턴스인지 확인물리적 동일성 : 메모리 주소 ( == 사용 )
논리적 동일성 : 값 ( equals 사용 )
=> equals()
재정의했다면 hashCode()
도 재정의
객체 원본을 유지해 놓고 복사본을 사용하거나
기본 틀의 복사본을 사용해 동일한 인스턴스를 만들어 복잡한 생성 과정을 간단히 하려는 경우 사용
clone()
사용 시 원본 객체는 반드시 cloneable 인터페이스
를 명시
class 클래스명 implements Cloneable {
}
CloneNotSupportedException
예외 발생멤버변수만 복제
기본 타입 : 값 복사
클래스 타입 : 주소 복사
객체를 통째로 복사하지만 객체가 참조하는 또 다른 객체까지
복사하지 못 함
👉 복제 객체에서 참조하는 객체의 값, 주소를 변경하면
원본 객체가 참조하는 객체의 값, 주소도 변경된다 (단, String 제외)