충분히 쌓여가는
하나의 배열로 여러 종류 객체 다루기(다형성 장점 2) 본문
하나의 배열로 여러 종류 객체 다루기
조상타입의 배열에 자손들의 객체를 담을 수 있다
Product라는 타입의 배열 p는 다형성 때문에 자식들이 들어올 수 있다
(Tv 객체, Computer 객체, Audio 객체는 타입이 전부 다른데 함께 배열에 들어갈 수 있다)
코드
class Buyer {
int money = 1000;
int bonusPoint = 0;
Product[] cart = new Product[10];
int i = 0;
void buy(Product p) {
if(money < p.price) {
System.out.print("잔액 부족");
return;
}
money -= p.price;
bonusPoint += p.bonusPoint;
cart[i++] = p;
}
}
class Product {
int price;
int bonusPoint;
Product(int price) {
this.price = price;
bonusPoint = (int) (price / 10.0);
}
Product() {} // 기본 생성자
}
class Tv1 extends Product {
Tv1() { super(100); }
public String toString() { return "Tv"; }
}
class Computer extends Product {
Computer() {
super(200);
}
public String toString() { return "Computer"; }
}
class Audio extends Product {
Audio() {
super(50);
}
public String toString() { return "Audio"; }
}
class Buyer {
int money = 1000;
int bonusPoint = 0;
Product[] cart = new Product[10];
int i = 0;
void buy(Product 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] + ", ";
// itemList += cart[i].toString() + ", ";
}
System.out.println("sum: " + sum);
System.out.println("itemList: " + itemList);
}
}
public class polymorphism {
public static void main(String[] args) {
Buyer b = new Buyer();
b.buy(new Tv1());
b.buy(new Computer());
b.buy(new Audio());
b.summary();
}
}
Tv를 구입했습니다
Computer를 구입했습니다
Audio를 구입했습니다
sum: 350
itemList: Tv, Computer, Audio,
'Java > 객체지향' 카테고리의 다른 글
추상클래스의 작성 (0) | 2023.06.14 |
---|---|
추상 클래스(abstract class), 추상 메서드(abstract method) (0) | 2023.06.13 |
매개변수의 다형성(다형성 장점 1) (0) | 2023.06.13 |
instanceof 연산자 (0) | 2023.06.12 |
참조변수의 형변환 (0) | 2023.06.12 |