다형성 활용 예제

BuZZLightyear·2023년 2월 28일
0

정리

목록 보기
15/47
class Customer {
    int money = 11000;

    void buyCoffee(Coffee coffee) { // 매개변수의 다형성
        if (money < coffee.price) { // 물건 가격보다 돈이 없는 경우
            System.out.println("잔액이 부족합니다.");
            return; //잔액이부족할시 멈춰줌 else 써도되긴함
        }
        money = money - coffee.price; // 가진 돈 - 커피 가격
        System.out.println(coffee + "를 구입했습니다.");
    }
}

class Coffee {
    int price;

    public Coffee(int price) {
        this.price = price;
    }
}

class Americano extends Coffee {
    public Americano() {
        super(4000); // 상위 클래스 Coffee의 생성자를 호출
    }

    public String toString() {
        return "아메리카노";
    } //Object클래스 toString()메서드 오버라이딩
}

class CaffeLatte extends Coffee {
    public CaffeLatte() {
        super(5000);
    }

    public String toString() {
        return "카페라떼";
    }
}
    public static void main(String[] args) {
        Customer customer = new Customer();
        customer.buyCoffee(new Americano());
        customer.buyCoffee(new CaffeLatte());
        System.out.println("현재 남은 잔액은" + customer.money + "입니다");
    }
아메리카노를 구입했습니다.
카페라떼를 구입했습니다.
현재 남은 잔액은2000입니다

다형성의 특징에 따라 개별적인 커피의 타입이아니라 상위 클래스인 Coffee의 타입을 매개변수로 받으면 그 하위 클래스의 참조변수이면 어떤 것이든 매개변수로 전달 될 수 있다 그래서 매번 다른 타입의 참조변수를 매개변수로 전달 안해도 된다.

profile
버즈라이트이어

0개의 댓글