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);
    }
}