같은 클래스 내에서만 접근이 가능하다.
같은 패키지 내에서만 접근이 가능하다.
같은 패키지 내에서, 그리고 다른 패키지의 자손클래스에서 접근이 가능하다.
접근 제한이 전혀 없다.
제어자 | 같은 클래스 | 같은 패키지 | 자손클래스 | 전체 |
---|---|---|---|---|
public | O | O | O | O |
protected | O | O | O | X |
(default) | O | O | X | X |
private | O | X | X | X |
public > protectd > (default) > private
package JavaChobo.pkg1;
class MyParent {
private int prv; // 같은 클래스
int dft; // 같은 패키지
protected int prt; // 같은 패키지 + 자손(다른 패키지)
public int pub; // 접근제한 없음.
public void printMembers() {
System.out.println(prv); // OK
System.out.println(dft); // OK
System.out.println(prt); // OK
System.out.println(pub); // OK
}
}
public class MyParentTest {
public static void main(String[] args) {
MyParent p = new MyParent();
System.out.println(p.prv);
// 접근제어자가 private인데, 다른 클래스에서
// 사용하려고 했기 때문에 에러발생
System.out.println(p.dft); // OK
System.out.println(p.prt); // OK
System.out.println(p.pub); // OK
}
}