다형성의 장점

YangJiWon·2021년 1월 27일
0

Java

목록 보기
8/8

다형성

  • 자식 클래스의 타입을 가지고 부모 참조 변수 객체를 선언할 수 있는 것
// product 부모
// computer 자식
// tv 자식
Product p = new Computer(); // O
Computer c = new Product(); // X

다형성의 장점

  1. 다형적 매개변수
  2. 하나의 배열로 여러 종류의 객체 다룰 수 있음
package acorn;
import java.util.*;

class Product {
	int price;
	int bonusPoint;
	
	Product (int price) {
		this.price = price;
		bonusPoint = (int)(price / 10.0);
	}
}

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

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

class Buyer {
	int money = 1000;
	int bonusPoint = 0;
	Vector item = new Vector();
	
	void buy(Product p) { // 1. 다형적 매개변수
		if (money < p.price) {
			System.out.println("잔액이 부족하여 물건을 살 수 없습니다.");
			return;
		}
		
		money -= p.price;
		bonusPoint += p.bonusPoint;
		item.add(p);  // 2. 하나의 배열로 다양한 객체들을 구성할 수 있음 
		System.out.println(p + "을/를 구입하셨습니다.");
	}
	
	void refund(Product p) {
		if (item.remove(p)) {
			money += p.price;
			bonusPoint -= p.bonusPoint;
			System.out.println(p + "을/를 반품하셧씁니다.");
		} else {
			System.out.println("구입하신 제품 중 해당 제품이 없습니다.");
		}
	}
	
	void summary() {
		int sum = 0;
		String itemList = "";
		
		if (item.isEmpty()) {
			System.out.println("구입하신 제품이 없습니다.");
			return;
		}
		
		for (int i = 0; i < item.size(); i++) {
			Product p = (Product)item.get(i); // 2. 하나의 배열로 다양한 객체들을 구성할 수 있음 
			sum += p.price;
			itemList += (i==0) ? "" + p : ", " + p;
		}
		System.out.println("구입하신 물품의 퐁금액은 " + sum + "만원입니다.");
		System.out.println("구입하신 제품은 " + itemList + "입니다.");
	}
}

public class test {
	public static void main(String[] args) {
		// TODO Auto-generated method stub;
		Buyer b = new Buyer();
		
		b.buy(new Tv());
		b.buy(new Computer());
		b.summary();
	}
}
  • 출처 : 자바의 정석 3rd
profile
데이터데이터데이터!!

0개의 댓글