반응형
Polymorphism of Parameters (매개변수의 다형성)
Method의 매개변수로 부모클래스의 자손 타입의 참조변수라면 어느 것이나 매개 변수로 받아 들일 수 있다.
상속 할 제품 조상 클래스.
public class Product {
int price; //제품의 가격
int bonusPoint; //제품 구매시 주어지는 포인트
Product(int price){
this.price = price;
bonusPoint = (int)(price/10.0); //보너스 포인트는 제품의 10%
}
}
상속 받을 제품 자식 클래스.
public class Tv1 extends Product { //Product에서 상속 받는다.
Tv1(){
super(100); // 조상클래스의 생성자를 호출하여 100을 입력한다.
}
public String toString(){ //Object클래스의 toString을 오버라이팅 한다.
return "TV";
}
}
public class Computer1 extends Product {
Computer1(){
super(100);
}
public String toString(){
return "Computer";
}
}
public class iPhone12Pro extends Product {
iPhone12Pro(){
super(600);
}
public String toString() {
return "iPhone12Pro";
}
}
구매자 클래스
public class buyer { //제품을 구매할 구매자 클래스.
int money = 1000; //구매자의 보유 금액.
int bonusPoint = 0; //구매자의 보유 포인트.
public void buy(Product p){
if(money < p.price){
System.out.println("잔액이 부족하여 물건을 살 수 없습니다.");
return;
}
money -= p.price; //보유 금액에서 제품의 가격을 뺀다.
bonusPoint += p.bonusPoint; //보유 포인트에서 제품 포인트를 더한다.
System.out.println(p + "을/를 구입하셨습니다.");
}
}
실행
public static void main(String[] args) {
buyer b = new buyer();
// Tv1 t = new Tv1();
// b.buy(t);
// 이 생략되어.
b.buy(new Tv1());
b.buy(new Computer1());
b.buy(new iPhone12Pro());
System.out.println("현재 남은 돈은 " + b.money + "입니다.");
System.out.println("현재 보너스 점수는" + b.bonusPoint + "입니다.");
}
//TV을/를 구입하셨습니다.
//Computer을/를 구입하셨습니다.
//iPhone12Pro을/를 구입하셨습니다.
//현재 남은 돈은 200입니다.
//현재 보너스 점수는80입니다.
반응형
'JAVA' 카테고리의 다른 글
[Java] Exception handling (예외처리) (0) | 2022.06.16 |
---|---|
[Java] Array of Objects (abstract) (0) | 2022.06.15 |
[Java] Interface (0) | 2022.06.09 |
[Java] Inheritance (상속) (0) | 2022.06.08 |
[Java] 숫자 검사하기. (0) | 2022.06.07 |