package object;
class Book implements Cloneable { // 인터페이스 Cloneable 를 상속받아야 한다.
// 이클래스가 복제 가능하다고 명시해줘야 한다.
String title;
String author;
public Book(String title, String author) {
this.title = title;
this.author = author;
}
public String toString() {
return author + " , " + title;
}
// Clone() 은 메모리가 복제되기 때문에 그대로 메소드를 쓰면 된다.
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone(); // 인스턴스 값을 복사
}
// finalize()메소드는 직접 호출되는 메소드가 아니고 객체가 힙메모리에서 해제될때 가비지콜렉터에서 호출되는 메소드이다.
@Override
protected void finalize() throws Throwable {
// 리소스해제 ,소켓 해제 등을 수행한다.
super.finalize();
}
}
public class ToStringTest extends Object { // Object 가 생략되어 있다 컴파일러가 붙여줌
public static void main(String[] args) throws CloneNotSupportedException { // 이셉션이 발생할수있다.
Book book = new Book("태백산맥","공소영");
System.out.println(book); // 패키지.클래스이름 @ 해시코드 -> toString() 재정의
Book book2 = (Book)book.clone(); // clone()이 obj 로 반환되서 다운캐스팅을 해줘야 한다.
System.out.println(book2); // clone() 메소드를 사용하려면 Cloneable 를 명시해 줘야 한다.
}
}
Student2 kim = new Student2("김철중",100);
Student2 lee = (Student2) kim.clone(); <- 복사 객체 만들기
'JAVA Programming' 카테고리의 다른 글
[55] 자바 버전 확인하기 (0) | 2020.07.20 |
---|---|
[54] 객체 복사와 toString 으로 반환값 (0) | 2020.07.17 |
[52] equals() 와 hashCode() 재정의 (0) | 2020.07.17 |
[51] Object 최상위클래스 의 toString() , equals() , hashCode() (0) | 2020.07.17 |
[50] 최상위 클래스 Object 클래스 , toString() 메소드 (0) | 2020.07.17 |