반응형
protected
- 상위 클래스에서 작성한 필드(멤버변수)나 메서드(멤버함수) 중 외부 클래스에서 사용할 수 없지만,
하위 클래스에서는 사용 할수 있도록 지정하는 예약어 .
- 상속받은 하위 클래스에서는 public처럼 사용할 수 있다.
- protected는 상속된 하위 클래스를 제외한 나머지 외부 클래스에서는 private과 동일한 역할을 한다.
- 동일 패키지 내에서는 가시성이 허용된다.
| 접근 제한자 가시성
외부 클래스 | 하위 클래스 | 동일 패키지 | 내부 클래스 | |
public | O | O | O | O |
protected | X | O | O | O |
선언되지 않음 (default) |
X | X | O | O |
private | X | X | X | O |
| 사용 예)
상위클래스
public class Customer {
//필드변수 정의
/*
Customer 클래스 필드(멤버 변수) 정의
customerID : 고객 아이디
customerName :고객 이름
costomerGrade : 고객등급
bonusPoint : 고객의 보너스 포인트 -> 고객이 제픔을 구매할 경우 누적되는 보너스 포인트입니다.
bonusRatio : 보너스 포인트 적립 비율
*/
protected int customerID; //고객 아이디
protected String customerName; //고객 이름
protected String customerGrade; //고객 등급
int bonusPoint; //보너스 포인트
double bonusRatio; //적립비율 - 비율, 소수점도 나타낼 것이기 때문에 실수형사 용
/*[참고]모든 필드를 반드시 private로 선언할 필요는 없다. 필요에 따라 필드나 메서드를 외부에 노출하지 않을 목적일 때 선언한다.*/
/*[참고] 1% = 1/100 = 0.01 로 나타낼 수 있다*/
하위클래스
//VIPCustomer 클래스는 Customer 클래스를 상속받는다.
public class VIPcustomer extends Customer {
//필드(멤버변수) 정의
/*상속안썻을때
//Customer클래스와 겹치는 필드가존재한다.
private int customerID; //고객 아이디
private String customerName; //고객 이름
private String customerGrade; //고객 등급
int bonusPoint; //보너스 포인트
double bonusRatio; //적립비율
*/
//VIP 고객 관련 기능을 구현 할 때만 필요한 멤버 변수
private int agentID; //VIP 고객 담당 상담원 아이디
double saleRatio; //할인율
//디폴트 생성자 정의
public VIPcustomer() {
//상위클래스에서 private 변수일때는 오류발생.
//접근 제한자 protected가 필요.
/*상위클래스 변수를 사용하기 위한 protected 예약어 -> 상위 클래스에서 작성한 필드(멤버변수)나
*메서드(멤버함수) 중 외부 클래스에서 사용할 수 없지만 하위 클래스에서는 사용 할수 있도록 지정하는 예약어
*상속받은 하위 클래스에서는 public처럼 사용할 수 있다.
*protected는 상속된 하위 클래스를 제외한 나머지 외부 클래스에서는 private과 동일한 역할을 한다.
*동일 패키지 내에서는 가시성이 허용된다.
*/
customerGrade = "VIP"; //고객등급 VIP
bonusRatio = 0.05; //보너스 적립 5%
saleRatio = 0.1; //할인률 10%
//하위클래스를 생성할 때 콘솔 출력문을 작성합니다.
System.out.println("VIPcustomer() 생성자를 호출합니다.");
}
}
반응형
'Language > JAVA' 카테고리의 다른 글
[JAVA]업캐스팅(upcasting) (0) | 2020.06.22 |
---|---|
[JAVA]부모를 부르는 SUPER 예약어 (0) | 2020.06.22 |
[JAVA]상속과 다형성 (0) | 2020.06.22 |
[JAVA]클래스 메서드 (0) | 2020.06.18 |
[JAVA]static 변수 (0) | 2020.06.18 |
댓글