Notice
Recent Posts
Recent Comments
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Archives
Today
Total
관리 메뉴

충분히 쌓여가는

하나의 배열로 여러 종류 객체 다루기(다형성 장점 2) 본문

Java/객체지향

하나의 배열로 여러 종류 객체 다루기(다형성 장점 2)

빌드이너프 2023. 6. 13. 17:00

하나의 배열로 여러 종류 객체 다루기

조상타입의 배열에 자손들의 객체를 담을 수 있다

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,