자바

JAVA 자바 protected 접근 제한자

알통몬_ 2017. 3. 12. 19:37
반응형


안녕하세요 알통몬입니다.

공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!!

포스팅 내용이 찾아주신 분들께 도움이 되길 바라며

더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^

 

protected 접근 제한자


접근 제한자는

public -> protected -> default -> private 오른쪽으로 갈수록 접근 제한이 강화됩니다.


접근 제한  적용대상                     접근할 수 없는 클래스

public      클래스,필드,생성자,메서드   없음

protected  필드,생성자,메서드           자식 클래스가 아닌 다른 패키지에 소속된 클래스

default     클래스,필드,생성자,메서드  다른 패키지에 소속된 클래스

private     필드,생성자,메서드           모든 외부 클래스


protected는 같은 패키지에서는 default와 같이 접근 제한이 없지만,

 다른 패키지에서는 자식 클래스만 접근을 허용합니다.



예제)

package 1 A 클래스

package sec06.exam01_protected.package1;

public class A {

protected String field;

protected A() {

}

protected void method() {

}

}


package 1 B 클래스

package com.naver.blog1;

public class B {

public void method() {

A a = new A();

a.field = "value";

a.method();

}

}


package 2 C 클래스 

package com.naver.blog2;


import com.naver.blog1;


public class C {

public void method() {

/* A클래스의 자식이 아니므로 A클래스의 필드 생성자 메서드 사용불가.

A a = new A();

a.field = "value";

a.method();

*/

}

}


package 2 D 클래스

package com.naver.blog2;


import com.naver.blog1;


public class D extends A {

public D() {

super(); // 같은 패키지는 아니지만 자식 클래스이므로 A클래스의 필드 메서드 생성자 사용가능.

this.field = "value";

this.method();

}

}

반응형