본문 바로가기
Java/Java 예습

[Java] 자바의 객체 Part.2 실습_2

by 박채니 2022. 1. 26.

안녕하세요, 코린이의 코딩 학습기 채니입니다.

Java 객체를 예습했던 내용에 대해 실습을 정리한 포스팅입니다.

 

1) clone메소드를 활용하기

package com.kh.prac5.model.vo;

public class Book {
	String title;	//책 제목
	int price;	//가격
	String writer;	//저자
	String publisher;//출판사
	
	public Book() {}
	
	public Book(String title, int price, String writer, String publisher) {
		this.title = title;
		this.price = price;
		this.writer = writer;
		this.publisher = publisher;
	}
	
	public String getTitle() {
		return title;
	}
	
	public void setTitle(String title) {
		this.title = title;
	}
	
	public int getPrice() {
		return price;
	}
	
	public void setPrice(int price) {
		this.price = price;
	}
	
	public String getWriter() {
		return writer;
	}
	
	public void setWriter(String writer) {
		this.writer = writer;
	}
	
	public String getPublisher() {
		return publisher;
	}
	
	public void setPublisher(String publisher) {
		this.publisher = publisher;
	}
	
	@Override
	public String toString() {
		return "제목 : " + title + ", 가격 : " + price + ", 저자 : " + writer + ", 출판사 : " + publisher;
	}
	
	//1. new 연산자
	@Override
	public Book clone() {
		return new Book(title, 0, writer, publisher);
	}
	
}
@run
ackage com.kh.prac5.run;

import java.util.Scanner;

import com.kh.prac5.model.vo.Book;

public class Run {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		Book bk = new Book("자바강의", 120000, "api마스터", "KH");
		Book copyBk = bk.clone();
		System.out.println("바뀌기 전 >> " + copyBk);
		
		System.out.print("책의 가격을 입력 하시오 : ");
		copyBk.setPrice(sc.nextInt());
		System.out.println("바뀐 후 >> " + copyBk);
		
	}

}

@출력값
바뀌기 전 >> 제목 : 자바강의, 가격 : 0, 저자 : api마스터, 출판사 : KH
책의 가격을 입력 하시오 : 20000
바뀐 후 >> 제목 : 자바강의, 가격 : 20000, 저자 : api마스터, 출판사 : KH

 

2. Object의 clone()을 활용

package com.kh.prac5.model.vo;

public class Book implements Cloneable{
	String title;	//책 제목
	int price;		//가격
	String writer;	//저자
	String publisher;	//출판사
	
	public Book() {}
	
	public Book(String title, int price, String writer, String publisher) {
		this.title = title;
		this.price = price;
		this.writer = writer;
		this.publisher = publisher;
	}
	
	public String getTitle() {
		return title;
	}
	
	public void setTitle(String title) {
		this.title = title;
	}
	
	public int getPrice() {
		return price;
	}
	
	public void setPrice(int price) {
		this.price = price;
	}
	
	public String getWriter() {
		return writer;
	}
	
	public void setWriter(String writer) {
		this.writer = writer;
	}
	
	public String getPublisher() {
		return publisher;
	}
	
	public void setPublisher(String publisher) {
		this.publisher = publisher;
	}
	
	@Override
	public String toString() {
		return "제목 : " + title + ", 가격 : " + price + ", 저자 : " + writer + ", 출판사 : " + publisher;
	}
	
	//2. Object의 clone()를 활용 (Cloneable 구현 및 CloneNotSupportedException 예외처리)
	@Override
	public Book clone() {
		Book result = null;
		try {
			result = (Book)super.clone();
		} catch(CloneNotSupportedException e ) {
			e.printStackTrace();
		}
		return result;
	}
}

@출력값
바뀌기 전 >> 제목 : 자바강의, 가격 : 120000, 저자 : api마스터, 출판사 : KH
책의 가격을 입력 하시오 : 20000
바뀐 후 >> 제목 : 자바강의, 가격 : 20000, 저자 : api마스터, 출판사 : KH