부모타입으로 적용하면 상속받는 타입 사용가능

     

    package kr.or.kihd.polymorphism3;
    
    public class TV extends Product {
    
    	public TV() {
    		//조상클래스의 매개변수가 있는 생성자 Product(int price){}를 호출
    		super(300);
    	}
    	
    	@Override
    	public String toString() {
    		return "TV";
    	}
    	
    }
    

     

    package kr.or.kihd.polymorphism3;
    
    public class Product {
    	
    	int price;   	//제품가격
    	int bounsPoint; //제품구매시 제공하는 보너스 점수
    	
    	public Product(int price) {
    		this.price = price;
    		//보너스 점수 제품가격의 10%를 적립
    		this.bounsPoint = (int)(price/10.0);
    	}
    	
    	
    	
    }
    
    package kr.or.kihd.polymorphism3;
    
    public class Computer extends Product {
    
    	public Computer() {
    		super(200);	
    	}
    	
    	@Override
    	public String toString() {
    		return "Computer";
    	}
    	
    }
    

     

    package kr.or.kihd.polymorphism3;
    
    public class Audio extends Product {
    
    	public Audio() {
    		super(100);
    	}
    
    	@Override
    	public String toString() {
    		return "Audio";
    	}
    }
    

    buy 부모타입으로 적용하면 상속받는 타입 사용가능

    package kr.or.kihd.polymorphism3;
    
    //독립클래스
    public class Buyer {
    	
    	int money = 1000;         //소유금액
    	int bonusPoint = 0;       //보너스 점수
    	
    	public void buy(Product product) {
    		//구매자가 가진 돈보다 제품의 가격이 비싼 경우 
    		if(this.money < product.price) {
    			System.out.println("잔액이 부족하여, 물건 구입이 안됩니다.");
    			return;
    		}
    		this.money -= product.price;
    		this.bonusPoint += product.bounsPoint;
    		System.out.println(product + "를 구매하셨습니다.");
    	}
    	
    	public void buy(Audio audio) {
    		//구매자가 가진 돈보다 제품의 가격이 비싼 경우 
    		if(this.money < audio.price) {
    			System.out.println("잔액이 부족하여, 물건 구입이 안됩니다.");
    			return;
    		}
    		this.money -= audio.price;
    		this.bonusPoint += audio.bounsPoint;
    		System.out.println(audio + "를 구매하셨습니다.");
    	}
    	
    }
    
    package kr.or.kihd.polymorphism3;
    
    public class PrameterTest {
    
    	public static void main(String[] args) {
    		
    		Buyer buyer = new Buyer();
    		buyer.buy(new TV());
    		
    		System.out.println("현재 남은 돈: " + buyer.money + "만원입니다." );
    		System.out.println("현재 남은 포인트는 : " + buyer.bonusPoint + "점입니다.");
    		
    		buyer.buy(new Audio());
    		buyer.buy(new Computer());
    		
    		System.out.println("현재 남은 돈: " + buyer.money + "만원입니다." );
    		System.out.println("현재 남은 포인트는 : " + buyer.bonusPoint + "점입니다.");
    
    	}
    
    }
    

     

    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기
    loading