@Override
public int calcPrice(int price) {
bonusPoint += price * bonusRatio;
return price - (int)(price * salesRatio);
}
Customer
public int calcPrice(int price) { bonusPoint += price * bonusRatio; return price; }
VIPCustomer
@Override public int calcPrice(int price) { // 계산 bonusPoint += price * bonusRatio; // 포인트 적립 price -= (int)(price * salesRatio); // 할인된 가격 => 소수점이 나올수도있기에 int처리 return price; }
public class CustomerTest {
public static void main(String[] args) {
Customer customerLee = new Customer(10001, "이순신");
customerLee.bonusPoint = 1000;
int price = customerLee.calcPrice(1000);
System.out.println(customerLee.showCustomerInfo() +"내실 금액은" +price + "원 입니다.");
VIPCustomer customerKim = new VIPCustomer(10002, "김유신");
customerKim.bonusPoint = 10000;
price = customerKim.calcPrice(1000);
System.out.println(customerKim.showCustomerInfo() +"내실 금액은" +price + "원 입니다.");
// 가상메서드
Customer vc = new VIPCustomer(12345, "noname");
System.out.println(vc.showCustomerInfo() + price);
System.out.println(vc.calcPrice(1000));
}
}
이순신님의 등급은 SILVER이며, 보너스 포인트는1010입니다.내실 금액은1000원 입니다.
김유신님의 등급은 VIP이며, 보너스 포인트는10050입니다.내실 금액은900원 입니다.
noname님의 등급은 VIP이며, 보너스 포인트는0입니다.900
900
서로 다른 매개변수 형식을 가지고 있는 메서드를 여러 개 정의하는 것.
보통 하나의 메서드로 하나의 기능만 구현하지만
하나의 메서드로 여러 기능을 구현하기 때문에 붙여진 이름이다.
void human() {
System.out.println("파라미터 0개");
}
void human(int a) {
System.out.println("파라미터 1개");
}
void human(int a, int b) {
System.out.println("파라미터 2개");
}
void human(String a, String b) {
System.out.println("파라미터 2개");
}
void human(int a, String b, String c) {
System.out.println("파라미터 3개");
}
void human(int a, String c) {
System.out.println("파라미터 2개");
}