상세 컨텐츠

본문 제목

[Java] 클래스 상속

Java

by TUZA 2022. 4. 9. 23:59

본문

클래스 상속

- 새로운 클래스를 구현할 때 이미 구현된 클래스를 상속(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' 카테고리의 다른 글

[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

관련글 더보기