public Customer() {
customerGrade = "SILVER";
bonusRatio = 0.01;
System.out.println("Customer() clall"); // 호출되는지 확인.
}
public VIPCustomer() { // super 사용법 1
super(0, "no-name");
salesRatio = 0.1;
bonusRatio = 0.05;
customerGrade = "VIP";
System.out.println("VIPCustomer() clall");// 호출되는지 확인.
}
public class CustomerTest {
public static void main(String[] args) {
VIPCustomer customerKim = new VIPCustomer();
customerKim.setCustomerName("김유신");
customerKim.setCustomerID(10002);
customerKim.bonusPoint = 10000;
System.out.println(customerKim.showCustomerInfo());
}
}
Customer() clall
VIPCustomer() clall
김유신님의 등급은 VIP이며, 보너스 포인트는10000입니다.
VIPCustomer 김유신만 호출 하였지만,
Customer() clall 이 먼저 불러지고 VIPCustomer() clall 이 불러진다.
// 디폴트 생성자 없애고 매개 변수가 있는 생성자 추가 public Customer(int customerID, String customerName) { this.customerID = customerID; this.customerName = customerName; customerGrade = "SILVER"; bonusRatio = 0.01; System.out.println("Customer(int, String) 생성자 호출"); }
// super를 이용하여 상위 클래스의 생성자 명시적으로 호출 public VIPCustomer(int customerID, String customerName) { super(customerID, customerName); customerGrade = "VIP"; bonusRatio = 0.05; salesRatio = 0.1; System.out.println("VIPCustomer(int, String) 생성자 호출"); }
public class CustomerTest { public static void main(String[] args) { Customer customerLee = new Customer(10010, "이순신"); customerLee.bonusPoint = 1000; System.out.println(customerLee.showCustomerInfo()); VIPCustomer customerKim = new VIPCustomer(10020, "김유신"); customerKim.bonusPoint = 10000; System.out.println(customerKim.showCustomerInfo()); } }
Customer(int, String) clall
이순신님의 등급은 SILVER이며, 보너스 포인트는1000입니다.
Customer(int, String) clall
VIPCustomer(int, String) clall
김유신님의 등급은 VIP이며, 보너스 포인트는10000입니다.