JAVA
[Java] 상속 문제와 풀이
songsua
2024. 11. 1. 17:49
- 문제: 상속 관계 상품
쇼핑몰의 판매 상품을 만들어보자.
'Book' , 'Album' , 'Movie' 이렇게 3가지 상품을 클래스로 만들어야 한다.
코드 중복이 없게 상속 관계를 사용하자. 부모 클래스는 `Item` 이라는 이름을 사용하면 된다. - 공통 속성: `name` , `price`
`Book` : 저자( `author` ), isbn( `isbn` )
`Album` : 아티스트( `artist` )
`Movie` : 감독( `director` ), 배우( `actor` )
다음 코드와 실행결과를 참고해서 `Item` , `Book` , `Album` , `Movie` 클래스를 만들어보자.
package extend1.ex1;
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);
}
}
package extend1.ex1;
public class Item {
//공통 속성: `name` , `price`
int price;
String name;
public Item(int price, String name) {
this.price = price;
this.name = name;
}
public int getPrice() {
return price;
}
public void print(){
System.out.println("아이템이름: " + name + " 아이템 가격: " + price);
}
}
package extend1.ex1;
public class Book extends Item {
private String author;
private String isbin;
//Book 클래스에서 사용할 객체들을 정리
public Book(String name, int price, String author, String isbin) {
//super로 부모클래스에서 가져온다고 선언한다.
super (price, name);
this.author = author;
this.isbin = isbin;
}
@Override
public void print() {
super.print();
System.out.println( "저자: " + author + " isbin: " + isbin);
}
}
package extend1.ex1;
public class Album extends Item {
private String artist;
public Album(String name, int price, String artist) {
super(price,name);
this.artist = artist;
}
public void print() {
super.print();
System.out.println("아티스트: 오버로딩안함" + artist);
}
}
package extend1.ex1;
public class Movie extends Item {
private String director;
private String actor;
public Movie(String name, int price, String director, String actor) {
super(price, name);
this.director = director;
this.actor = actor;
}
@Override
public void print() {
super.print();
System.out.println("Director: " + director);
}
}