하나의 배열로 여러 종류 객체 다루기
조상타입의 배열에 자손들의 객체를 담을 수 있다
Product라는 타입의 배열 p는 다형성 때문에 자식들이 들어올 수 있다
(Tv 객체, Computer 객체, Audio 객체는 타입이 전부 다른데 함께 배열에 들어갈 수 있다)

코드
class Buyer {
    int money = 1000;
    int bonusPoint = 0;
    
    Product[] cart = new Product[10];
    
    int i = 0;
    
    void buy(Product p) {
        if(money < p.price) {
            System.out.print("잔액 부족");
            return;
        }
        
        money -= p.price;
        bonusPoint += p.bonusPoint;
        cart[i++] = p;
    }
}
class Product {
    int price;
    int bonusPoint;
    Product(int price) {
        this.price = price;
        bonusPoint = (int) (price / 10.0);
    }
    Product() {} // 기본 생성자
}
class Tv1 extends Product {
    Tv1() { super(100); }
    public String toString() { return "Tv"; }
}
class Computer extends Product {
    Computer() {
        super(200);
    }
    public String toString() { return "Computer"; }
}
class Audio extends Product {
    Audio() {
        super(50);
    }
    public String toString() { return "Audio"; }
}
class Buyer {
    int money = 1000;
    int bonusPoint = 0;
    Product[] cart = new Product[10];
    int i = 0;
    void buy(Product p) {
        if (money < p.price) {
            System.out.println("잔액 부족");
            return;
        }
        money -= p.price;
        bonusPoint += p.bonusPoint;
        cart[i++] = p;
        System.out.println(p + "를 구입했습니다");
    }
    void summary() {
        int sum = 0;
        String itemList = "";
        for (int i = 0; i < cart.length; i++) {
            if (cart[i] == null) break;
            sum += cart[i].price;
            itemList += cart[i] + ", ";
            // itemList += cart[i].toString() + ", ";            
        }
        System.out.println("sum: " + sum);
        System.out.println("itemList: " + itemList);
    }
}
public class polymorphism {
    public static void main(String[] args) {
        Buyer b = new Buyer();
        b.buy(new Tv1());
        b.buy(new Computer());
        b.buy(new Audio());
        b.summary();
    }
}
Tv를 구입했습니다
Computer를 구입했습니다
Audio를 구입했습니다
sum: 350
itemList: Tv, Computer, Audio,
반응형
    
    
    
  '이것이 자바다 > 객체지향' 카테고리의 다른 글
| 추상클래스의 작성 (0) | 2023.06.14 | 
|---|---|
| 추상 클래스(abstract class), 추상 메서드(abstract method) (0) | 2023.06.13 | 
| 매개변수의 다형성(다형성 장점 1) (0) | 2023.06.13 | 
| instanceof 연산자 (0) | 2023.06.12 | 
| 참조변수의 형변환 (0) | 2023.06.12 |