[Java] 5.1.4 접근 지정자 protected

출간일 2016년 11월 28일

판매가 2000원

형태 ebook

학습에 도움이 되시면 ebook을 구입하여 소장하시면 감사하겠습니다.

언제나 휴일 출판사의 수익금의 대부분은 아프리카에 기부하고 있습니다.


5.1.4 접근 지정자 protected

 

캡슐화를 설명할 때 멤버 필드의 가시성을 지정하는 접근 지정자 중에서 protected 에 관한 설명은 생략하고 상속을 다룰 때 다시 설명하기로 하였습니다.

 

public으로 접근 지정하면 다른 형식에서도 접근할 수 있고 private으로 지정하면 해당 형식에서만 접근할 수 있다는 것은 캡슐화 과정에서 살펴보았습니다.

 

protected로 지정한 멤버는 해당 형식과 이를 기반으로 파생한 형식에서는 접근할 수 있고 그 외의 형식에서는 접근할 수 없게 합니다.

 

예를 들어 음악가가 연주를 하면 연주 스킬이 향상하게 구현하고자 합니다. 그리고 음악가를 파생한 피아니스트에서 레슨을 받으면 마찬가지로 연주 스킬을 향상하게 구현한다고 가정합시다.

 

이 때 음악가 클래스 연주 스킬의 접근 지정을 private으로 정하면 파생한 피아니스트 클래스에서도 접근할 수 없어서 레슨을 받으면 연주 스킬을 향상시키는 부분을 구현할 수 없습니다.

 

그리고 음악가 클래스 연주 스킬의 접근 지정을 public으로 정하면 다른 곳에서도 접근할 수 있어서 정보 은닉할 수 없어 신뢰성이 떨어질 수 있습니다.

 

이럴 때 protected로 접근 지정하면 만족하는 결과를 얻을 수 있습니다. 물론 연주 스킬의 변화 범위가 존재할 수 있기에 연주 스킬에 관한 멤버 필드를 private로 정하고 연주 스킬에 관한 설정자 메서드를 protected로 정하면 보다 나은 결과를 얻을 수 있습니다.

 

[소스 5.6] 기반 형식의 protected로 접근 지정한 멤버를 파생 형식에서 접근하는 예

실행 결과