Java 문제 - 상속 관계 상품 풀어보기
주어진 코드를 보고 쇼핑몰의 판매 상품을 만들어보도록 한다.
쇼핑몰 판매 상품
- Book, Album, Movie 3개 상품을 클래스로 만들기
- 공통 속성
name
,price
,quantity
- Book:
author
(저자),isbn
- Album:
artist
- Movie:
director
(감독),actor
(배우)
- Book:
- 공통 기능 이름은
Item
,Book
,Album
,Movie
클래스를 만든다.
요구사항
- 코드 중복 없이 상속 관계 생성한다.
쇼핑몰 판매 상품 - Main.java
package store;
import store.product.Album;
import store.product.Book;
import store.product.Movie;
public class Main {
public static void main(String[] args) {
Book book = new Book("Java", 10000, "Jea", "11111", 1);
Album album = new Album("그냥앨범", 11000, "Kim", 2);
Movie movie = new Movie("그냥영화", 12000, "Lee", "그냥감독", 3);
book.print();
album.print();
movie.print();
int sum = book.getPrice() + album.getPrice() + movie.getPrice();
System.out.println("결제 가격: " + sum);
}
}
실행결과
이름: Java, 갯수: 1, 총 가격: 10000
- 저자: Jea, isbn: 11111
이름: 그냥앨범, 갯수: 2, 총 가격: 22000
- 아티스트: Kim
이름: 그냥영화, 갯수: 3, 총 가격: 36000
- 감독: Lee, 배우: 그냥감독
결제 가격: 68000
풀이
src
└Store
├Main.java
└product (+)
├Album.java (+)
├Book.java (+)
├Item.java (+)
└Movie.java (+)
Album.java
package store.product;
public class Album extends Item {
private String artist;
public Album(String name, int price, String artist, int qty) {
super(name, price, qty);
this.artist = artist;
}
@Override
public void print() {
super.print();
System.out.println("- 아티스트: " + this.artist);
}
}
Book.java
package store.product;
public class Book extends Item {
private String author;
private String isbn;
public Book(String title, int price, String author, String isbn, int qty) {
super(title, price, qty);
this.author = author;
this.isbn = isbn;
}
@Override
public void print() {
super.print();
System.out.println("- 저자: " + this.author + ", isbn: " + this.isbn);
}
}
Item.java
package store.product;
public class Item {
protected String name;
protected int price;
protected int quantity;
public Item(String name, int price, int quantity) {
this.name = name;
this.price = price;
this.quantity = quantity;
}
public int getPrice() {
return price * quantity;
}
public void print() {
System.out.println("이름: " + this.name + ", 갯수: " + this.quantity + ", 총 가격: " + this.getPrice());
}
}
Movie.java
package store.product;
public class Movie extends Item {
private String director;
private String actor;
public Movie(String name, int price, String director, String actor, int qty) {
super(name, price, qty);
this.director = director;
this.actor = actor;
}
@Override
public void print() {
super.print();
System.out.println("- 감독: " + this.director + ", 배우: " + this.actor);
}
}