Hello

Java 다형성의 장점 - 여러 종류의 객체를 배열로 다루기

by 볼빵빵오춘기

글을 시작하기 전 다형성의 장점을 다시 한 번 확인해 보고 시작하겠다.

다형성의 장점

  1. 다형적 매개변수 (= 매개변수의 다형성) ⇒ 같은 타입 [이전 글에서는 이 부분 내용]
  2. 하나의 배열로 여러 종류 객체 다루기 ⇒ 여러 종류의 객체 저장 [현 글에서는 이 부분 내용]

 

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

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

// 코드1
Product p1 = new Tv();
Product p2 = new Computer();
Product p3 = new Audio();
// 코드2
Product p[] = new Product[3];
p[1] = new Tv();
p[2] = new Computer();
p[3] = new Audio();

코드1 처럼 Product를 상속받아 형변환이 가능한 클래스 Tv, Computer, Audio를 각 타입마다 변수를 하나씩 만들어 담을 수 도 있지만 코드2처럼 배열인 변수를 하나 만들어 넣어 값을 저장할 수도 있다.

 

참고

더보기

 

Vector클래스에는 Object[]로 인해 모든 객체를 저장가능

게다가 장점은 배열의 길이를 우리가 관리해줘야하지만 크기가 가변배열 가능하다!!


 

예제 코드

public class Hello {

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

		b.buy(new Tv2());
		b.buy(new Computer2());
		b.buy(new Audio2());
		b.summary();

	}
}
class Product2 {
	int price;			
	int bonusPoint;	

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

	Product2() {} //
}

class Tv2 extends Product2 {
	Tv2() {  super(100);	 }

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

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

class Audio2 extends Product2 {
	Audio2() { super(50); }
	public String toString() { return "Audio"; }
}

class Buyer2 {			  
	int money = 1000;	  
	int bonusPoint = 0; 
	Product2[] cart = new Product2[10];   
	int i =0;			  

	void buy(Product2 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] + ", ";
		}
		System.out.println("구입하신 총 금액 " + sum + "만원입니다.");
		System.out.println("구입하신 제품은 " + itemList + "입니다.");
	}
}

 

블로그의 정보

Hello 춘기's world

볼빵빵오춘기

활동하기