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 + "입니다.");
}
}
'👩🏻💻 About 프로그래밍 > Java' 카테고리의 다른 글
Java 추상클래스의 작성1 (0) | 2023.11.30 |
---|---|
Java 추상 클래스(abstract class), 추상 메서드(abstract method) (0) | 2023.11.30 |
Java 다형성의 장점 - 매개변수의 다형성 (0) | 2023.11.30 |
Java instanceof 연산자 (0) | 2023.11.29 |
Java 참조변수의 형변환 (0) | 2023.11.29 |
블로그의 정보
Hello 춘기's world
볼빵빵오춘기