JAVA

[Java] Polymorphism of Parameters (매개변수의 다형성)

SangRok Jung 2022. 6. 14. 15:44
반응형

 

 

 

 

Polymorphism of Parameters (매개변수의 다형성)

Method의 매개변수로 부모클래스의 자손 타입의 참조변수라면 어느 것이나 매개 변수로 받아 들일 수 있다.

 

 

 

상속 할 제품 조상 클래스. 

public class Product {
    int price; 			//제품의 가격
    int bonusPoint;		//제품 구매시 주어지는 포인트

    Product(int price){
        this.price = price;
        bonusPoint = (int)(price/10.0);		//보너스 포인트는 제품의 10%
    }
}

 

상속 받을 제품 자식 클래스.

public class Tv1 extends Product {		//Product에서 상속 받는다.
    Tv1(){
        super(100);		// 조상클래스의 생성자를 호출하여 100을 입력한다.
    }

    public String toString(){	//Object클래스의 toString을 오버라이팅 한다.
        return "TV";
    }
}


public class Computer1 extends Product {
    Computer1(){
        super(100);
    }
    public String toString(){
        return "Computer";
    }
}


public class iPhone12Pro extends Product {
    
    iPhone12Pro(){
        super(600);
    }

    public String toString() {
        return "iPhone12Pro";
    }
}

 

 

 

구매자 클래스

public class buyer {		//제품을 구매할 구매자 클래스.
    int money = 1000;		//구매자의 보유 금액.
    int bonusPoint = 0;		//구매자의 보유 포인트.

    public void buy(Product p){
        if(money < p.price){
            System.out.println("잔액이 부족하여 물건을 살 수 없습니다.");
            return;
        }
        money -= p.price;							//보유 금액에서 제품의 가격을 뺀다.
        bonusPoint += p.bonusPoint;					//보유 포인트에서 제품 포인트를 더한다.
        System.out.println(p + "을/를 구입하셨습니다.");	
        
    }
}

 

 

실행

    public static void main(String[] args) {
        buyer b = new buyer();

        // Tv1 t = new Tv1();
        // b.buy(t);
        // 이 생략되어.
        b.buy(new Tv1());
        b.buy(new Computer1());
        b.buy(new iPhone12Pro());

        System.out.println("현재 남은 돈은 " + b.money + "입니다.");
        System.out.println("현재 보너스 점수는" + b.bonusPoint + "입니다.");
    }

 

 

//TV을/를 구입하셨습니다.
//Computer을/를 구입하셨습니다.
//iPhone12Pro을/를 구입하셨습니다.
//현재 남은 돈은 200입니다.
//현재 보너스 점수는80입니다.
반응형

'JAVA' 카테고리의 다른 글

[Java] Exception handling (예외처리)  (0) 2022.06.16
[Java] Array of Objects (abstract)  (0) 2022.06.15
[Java] Interface  (0) 2022.06.09
[Java] Inheritance (상속)  (0) 2022.06.08
[Java] 숫자 검사하기.  (0) 2022.06.07