상속
- 자바 문법으로 상속을 구현할 때는 extends 예약어를 사용합니다.
- 객체 지향 프로그램에서도 마찬가지로 B클래스가 A클래스를 상속받으면 B클래스는 A클래스의 메서드를 사용할 수 있습니다.
- 객체 지향 프로그램은 유지보수하기 편하고 프로그램을 수정하거나 새로운 내용을 추가하는 것이 유연한데, 그 기반이 되는 기술이 상속입니다.
- 부모 클래스(parent class)를 '상위클래스', 자식 클래스를 '하위 클래스' 등으로 부르기도 합니다.
아래 코드는 B클래스가 A 클래스를 상속합니다.
class B extends A {
}
상속을 사용하여 고객 관리 프로그램 구현하기
package study02;
public class Tmember {
private int TmemberID; //고객 아이디
private String TmemberName; // 고객 이름
private String TmemberGrade; // 고객 등급
int bonusPoint; // 보너스 포인트
double bonusRatio; // 적립비율
public Tmember() {
TmemberGrade = "SILVER"; //기본 등급
bonusRatio = 0.01; // 보너스 포인트 기본 적립 비율
}
public int calcPrice(int price) {
bonusPoint += price * bonusRatio; // 보너스 포인트 계산
return price;
}
public String showCustomerInfo() {
return TmemberName + " 님의 등급은 " + TmemberGrade + "이며, 보너스 포인트는" + bonusPoint + "입니다.";
}
public int getTmemberID() {
return TmemberID;
}
public void setTmemberID(int tmemberID) {
TmemberID = tmemberID;
}
public String getTmemberName() {
return TmemberName;
}
public void setTmemberName(String tmemberName) {
TmemberName = tmemberName;
}
public String getTmemberGrade() {
return TmemberGrade;
}
public void setTmemberGrade(String tmemberGrade) {
TmemberGrade = tmemberGrade;
}
}
package study02;
public class VIPTmember extends Tmember {
private int agentID; //VIP 고객 상담원 아이디
double saleRatio; // 할인율
public VIPTmember() {
// TmemberGrade = "VIP"; 상위 클래스가 private변수 이므로 오류 발생 (private 변수는 get() 메서드를 사용해 값을 가져올 수 있고, set() 메서드를 사용해 값을 지정할 수 있습니다.)
bonusRatio = 0.05;
}
public int getAgentID() {
return agentID;
}
}
package study02;
public class TmemberTest1 {
public static void main(String[] args) {
Tmember customerLee = new Tmember();
// CustomerID와 customerName은 protected 변수이므로 set() 메서드 호출
customerLee.setTmemberID(2121001);
customerLee.setTmemberName("지민재");
customerLee.bonusPoint = 1000;
System.out.println(customerLee.showCustomerInfo());
VIPTmember customerKim = new VIPTmember();
// CustomerID와 customerName은 protected 변수이므로 set() 메서드 호출
customerKim.setTmemberID(2121002);
customerKim.setTmemberName("이민재");
customerKim.bonusPoint = 10000;
System.out.println(customerKim.showCustomerInfo());
}
}
'Java' 카테고리의 다른 글
Java - 배열을 문자열로 합치기 (0) | 2023.02.03 |
---|---|
싱글톤 패턴의 이점과 단점 (0) | 2022.08.15 |
static 변수 (Java) (0) | 2022.07.13 |
this(Java) (0) | 2022.07.12 |
Java 복습_10 (0) | 2022.07.10 |
댓글