본문 바로가기

Back-end/Java

[Java - 기본] Section9 - 문제와 풀이

 

✅ 상속 관계 상품


🔔 문제 설명

쇼핑몰의 판매 상품을 만들어보자.



🔔 요구 사항

  • Book, Album, Movie 3가지 상품을 클래스로 만들어야 한다.
  • 코드 중복이 없게 상속 관계를 사용하자. 부모 클래스는 Item이라는 이름을 사용하면 된다.
  • 공통 속성 : name, price
    • Book : 저자(author), isbn(isbn)
    • Album : 아티스트(artist)
    • Movie : 감독(director), 배우(actor)



📚 예시 코드

package extends1.ex;

public class ShopMain {

  public static void main(String[] args) {
    Book book = new Book("JAVA", 10000, "han", "12345");
    Album album = new Album("앨범1", 15000, "seo");
    Movie movie = new Movie("영화1", 18000, "감독1", "배우1");

    book.print();
    album.print();
    movie.print();

    int sum = book.getPrice() + album.getPrice() + movie.getPrice();
    System.out.println("상품 가격의 합: " + sum);
  }
}



🖥️ 실행 결과




💡정답


단축키
Override Methods → ⌃ + O

✏️ Item

package extends1.ex;

public class Item {
  private String name;
  private int price;

  public Item(String name, int price) {
    this.name = name;
    this.price = price;
  }

  public int getPrice() {
    return price;
  }

  // ex) 이름: JAVA, 가격: 10000
  public void print() {
    System.out.println("이름: " + name + ", 가격: " + price);
  }
}



✏️ Book

package extends1.ex;

public class Book extends Item {
  private String author;
  private String isbn;

  public Book(String name, int price, String author, String isbn) {
    super(name, price);
    this.author = author;
    this.isbn = isbn;
  }

  @Override
  public void print() {
    super.print();
    System.out.println("- 저자: " + author + ", isbn: " + isbn);
  }
}



✏️ Album

package extends1.ex;

public class Album extends Item {

  private String artist;

  public Album(String name, int price, String artist) {
    super(name, price);
    this.artist = artist;
  }

  @Override
  public void print() {
    super.print();
    System.out.println("- 아티스트: " + artist);
  }
}



✏️ Movie

package extends1.ex;

public class Movie extends Item {

  private String director;
  private String actor;

  public Movie(String name, int price, String director, String actor) {
    super(name, price);
    this.director = director;
    this.actor = actor;
  }

  @Override
  public void print() {
    super.print();
    System.out.println("- 감독: " + director + ", 배우: " + actor);
  }
}

'Back-end > Java' 카테고리의 다른 글

[Java - 기본] 다형성과 캐스팅  (0) 2024.04.30
[Java - 기본] 다형성 시작  (0) 2024.04.29
[Java - 기본] super - 생성자  (1) 2024.04.28
[Java - 기본] super - 부모 참조  (1) 2024.04.27
[Java - 기본] 상속과 접근 제어  (0) 2024.04.26