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

볼빵빵오춘기

활동하기