각진 세상에 둥근 춤을 추자
[Java] 다형성 - VIP 고객 클래스 본문
Customer 클래스를 생성한다.
package ch08_4;
public class Customer {
// 멤버 변수
protected int customerID; // 고객 아이디
protected String customerName; // 고객 이름
protected String customerGrade; // 고객 등급
int bonusPoint; // 보너스 포인트
double bonusRatio; // 적립 비율
public int getCustomerID() {
return customerID;
}
public void setCustomerID(int customerID) {
this.customerID = customerID;
}
public String getCustomerName() {
return customerName;
}
public void setCustomerName(String customerName) {
this.customerName = customerName;
}
public String getCustomerGrade() {
return customerGrade;
}
public void setCustomerGrade(String customerGrade) {
this.customerGrade = customerGrade;
}
// 디폴트 생성자
public Customer() {
initCustomer();
}
public Customer(int customerID, String customerName) {
this.customerID = customerID;
this.customerName = customerName;
initCustomer();
}
private void initCustomer() {
customerGrade = "SILVER"; // 기본 등급
bonusRatio = 0.01; // 보너스 포인트 기본 적립 비율
}
// 보너스 포인트 적립, 지불 가격 계산 메서드
public int calcPrice(int price) {
bonusPoint += price * bonusRatio; // 보너스 포인트 계산
return price;
}
// 고객 정보를 반환하는 메서드
public String show() {
return customerName + " 님의 등급은 " + customerGrade + "이며, 보너스 포인트는 " + bonusPoint + "입니다.";
}
}
이번에는 VIP 고객 클래스 코드를 생성한다.
package ch08_4;
public class VIPCustomer extends Customer {
// 추가 속성
private int agentID; // VIP 고객 상담원 아이디
double saleRatio; // 할인율
public VIPCustomer(int customerID, String customerName, int agentID) {
super(customerID, customerName);
customerGrade = "VIP";
bonusRatio = 0.05;
saleRatio = 0.1;
}
public int calcPrice(int price) {
bonusPoint += price * bonusRatio;
return price - (int)(price * saleRatio);
}
public int getAgentID() {
return agentID;
}
}
생성한 프로그램을 테스트할 프로그램을 작성한다.
package ch08_4;
public class CustomerTest {
public static void main(String[] args) {
Customer cus1 = new Customer();
cus1.setCustomerID(10010);
cus1.setCustomerName("이순신");
cus1.bonusPoint=1000;
System.out.println(cus1.show());
Customer cus2 = new VIPCustomer(10020, "김유신", 12345);
cus2.bonusPoint = 1000;
System.out.println(cus2.show());
System.out.println("-------할인율과 보너스 포인트 계산-------");
int price = 10000;
int cus1Price = cus1.calcPrice(price);
int cus2Price = cus2.calcPrice(price);
System.out.println(cus1.getCustomerName()+" 님이 "+cus1Price+"원 지불하셨습니다.");
System.out.println(cus1.show());
System.out.println(cus2.getCustomerName()+" 님이 "+cus2Price+"원 지불하셨습니다.");
System.out.println(cus2.show());
}
}
'Java' 카테고리의 다른 글
[Java] 다운캐스팅과 instanceof (0) | 2022.09.20 |
---|---|
[Java] 다형성 활용하기 (0) | 2022.09.20 |
[Java] 다형성 (0) | 2022.09.19 |
[Java] 메소드 오버라이딩 (0) | 2022.09.19 |
[Java] 상속 - 고객 관리 프로그램 (0) | 2022.09.19 |