검수요청.png검수요청.png

프로텍티드

위키원
이동: 둘러보기, 검색

프로텍티드(protected)는 객체 지향 프로그래밍(OOP)에서 같은 패키지 내에서 그리고 다른 패키지의 자손 클래스에서만 접근 가능하도록 허용하는 제어자이다.

개요[편집]

protected는 접근 제어자 중의 하나로 동일 패키지와 자손 클래스 관계에 있는 클래스에서 접근이 가능하도록하는 제어자이다. 자바에서는 접근 권한 제어를 modifier라고 하는데 protected는 잠재적으로 자식 클래스가 오버라이딩해서 변경해야 할 경우를 고려한 제어자이다.

특징[편집]

접근제어자에는 private, default / no modifier, protected, public이 존재하고, 이중에 default는 따로 명시하지 않는 경우를 뜻한다.

private는 각은 클래스 내에서 접근이 가능하도록한 것이고, default는 같은 폴더, public은 모든 클래스에서 접근이 가능하며 protected는 폴더와 클래스를 상속해서 구현하는 경우에만 접근이 가능하다.[1]

구분 제어자 설명
접근권한 public 모든 클래스에서 접근이 가능하다.
protected 동일 패키지에 속하는 클래스와 하위 클래스 관계의 클래스에 의해 접근이 가능하다.
private 클래스 내에서만 접근이 가능하다.

[2]

접근 권한[편집]

접근권한은 아래의 표로 확인할 수 있다. protected의 경우 모든 클래스에서 사용할 수 는 없지만 클래스, 하위, 동일 클래스에서는 사용이 가능하다.[2]

종류 클래스 하위 클래스 동일 클래스 모든 클래스
private O X X X
default O X O X
protected O O O X
public O O O O

역할[편집]

protect는 잠재적으로 자식 클래스오버라이딩해서 바꾸어야 할 경우를 고려한 제어자이다. 클래스를 디자인한 개발자가 메소드에 대해서 앞으로 더 구현할 것이 남았다거나, 혹은 디자인 컨셉트로서 일부러 완성시키지 않은 경우 둘 다를 의미할 수 있다. public의 경우 그대로 사용해도 충분한 메소드인데 protected의 경우 자식 클래스의 특성에 따라 변경해주어 사용하는 상황을 고려해서 만들어진 것이다. [2]

활용[편집]

접근제어자가 protected로 설정되었다면 protected가 붙은 변수, 메소드는 동일 패키지 내의 클래스 또는 해당 클래스를 상속받은 외부 패키지클래스에서 접근이 가능하다.

package test.sample;
public class Sample1 {
   protected String sample_name = "dog";
}
package test.sample.sample_list;

import sample.Sample1;

public class Sample_test extends Sample1 {       
   public static void main(String[] args) {
       Sample_test test1 = new Sample_test();
       System.out.println(test1.sample_name);       
   }    
}

위와 같은 코드가 있을 때 Sample1을 상속받은 Sample_test는 Sample1과 다른 패키지를 사용하지만 sample_name 변수가 protected로 설정되어있기 때문에 test1.sample_name과 같은 접근이 가능해진 것이다.[3]

각주[편집]

  1. IDEO, 〈Java에서 protected 의 의미와 용도〉, 《개인블로그》, 2015-12-23
  2. 2.0 2.1 2.2 개발이 하고 싶어요, 〈접근제어자 public, protected, private〉, 《개인블로그》, 2013-12-04
  3. 점프투자바, <접근제어자(Access Modifier>, 《WikiDocs》, 2017-09-11

참고자료[편집]

같이 보기[편집]


  검수요청.png검수요청.png 이 프로텍티드 문서는 프로그래밍에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.