Java 다형성의 장점 - 여러 종류의 객체를 배열로 다루기
by 볼빵빵오춘기글을 시작하기 전 다형성의 장점을 다시 한 번 확인해 보고 시작하겠다.
다형성의 장점
- 다형적 매개변수 (= 매개변수의 다형성) ⇒ 같은 타입 [이전 글에서는 이 부분 내용]
- 하나의 배열로 여러 종류 객체 다루기 ⇒ 여러 종류의 객체 저장 [현 글에서는 이 부분 내용]
여러 종류의 객체를 배열로 다루기
조상타입의 배열에 자손들의 객체를 담을 수 있다.
// 코드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
볼빵빵오춘기