클래스 상속
- 새로운 클래스를 구현할 때 이미 구현된 클래스를 상속(inheritance) 받아서 속성이나 기능을 확장하여 클래스를 구현하는 걸 말한다.
- 상속개념을 말할 때 보통 하위 클래스가 상위 클래스의 속성과 기능을 확장(extends)한다고 한다.
- 하위 클래스는 상위 클래스보다 더 구체적인 개념과 기능을 가진다.
- 상속 시 변수 접근제어자가 private 라면 접근을 할 수 없다. 그러므로 상속하고자하는 변수는 protected로 설정해두는 것이 좋다.
*protected : 외부클래스에서는 접근이 불가능하나 하위 클래스는 접근이 가능하다.
*private : 외부클래스, 하위클래스 모두 접근이 불가능하다.
package ch03;
public class Customer {
protected int customerID;
protected String customerName;
protected String customerGrade;
int bonusPoint;
double bonusRatio;
public Customer(int customerID, String customerName) {
this.customerID = customerID;
this.customerName = customerName;
customerGrade = "SILVER";
bonusRatio = 0.01;
}
public int calcPrice(int price) {
bonusPoint += price * bonusRatio;
return price;
}
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 int getBonusPoint() {
return bonusPoint;
}
public void setBonusPoint(int bonusPoint) {
this.bonusPoint = bonusPoint;
}
public double getBonusRatio() {
return bonusRatio;
}
public void setBonusRatio(double bonusRatio) {
this.bonusRatio = bonusRatio;
}
public String showCustomerInfo() {
return customerName + "님의 등급은 " + customerGrade + "이며, 보너스 포인트는 " + bonusPoint + "입니다.";
}
}
//Customer 클래스를 상속
public class VIPCustomer extends Customer {
double salesRatio;
private String agentID;
/*
* public VIPCustomer() {
*
* //super(); : 기본 constructor를 불러오는 키워드임.
*
* bonusRatio = 0.05; salesRatio = 0.1; customerGrade = "VIP";
*
* System.out.println("VIPCustomer() call");
*
* }
*/
public VIPCustomer(int customerID, String customerName) {
super(customerID, customerName);
customerGrade = "VIP";
bonusRatio = 0.05;
salesRatio = 0.1;
}
public String getAgentID() {
return agentID;
}
public double salesRatio() {
return salesRatio;
}
[Java] 메서드 재정의하기(overriding) (0) | 2022.04.10 |
---|---|
[Java] super (0) | 2022.04.10 |
[Java] ArrayList (0) | 2022.04.06 |
[Java] Array (0) | 2022.04.06 |
[Java] 함수 (0) | 2022.04.03 |