소프트웨어의 각 구성요소(변수, 메서드 등)에 외부에서 접근할 수 있는 수준을 설정해두는 것으로, 이를 통해 프로그램을 더욱 정교하고 엄격하게 관리할 수 있게 해줌
public
protected
(**default)**
private
public > protected > default > private
접근 제어자 | 같은 클래스 | 같은 패키지 | 자식 클래스 | 그 외의 영역 |
---|---|---|---|---|
public | O | O | O | O |
protected | O | O | O | |
default | O | O | ||
private | O |
package pkg1;
public class MyParent {
private int prv;
int dft;
protected int prt;
public int pub;
public void printMembers() {
System.out.println(prv);
System.out.println(dft);
System.out.println(prt);
System.out.println(pub);
}
}
class MyParentTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
MyParent p = new MyParent();
//System.out.println(p.prv); 에러발생 : private 멤버변수는 같은 클래스 내에서만 접근가능
System.out.println(p.dft);
System.out.println(p.prt);
System.out.println(p.pub);
}
}
package pkg2;
import pkg1.MyParent;
class MyChild extends MyParent { // MyParent 상속
public void printMembers() {
//System.out.println(prv); 에러 : 같은 클래스 내에서만 가능
//System.out.println(dft); 에러 : 같은 패키지 내에서만 가능
System.out.println(prt);
System.out.println(pub);
}
}
public class MyParentTest2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
MyParent p = new MyParent();
//System.out.println(p.prv); 에러발생 : private 멤버변수는 같은 클래스 내에서만 접근가능
//System.out.println(p.dft); 에러발생 : default 멤버변수는 같은 패키지 내에서만 접근가능
//System.out.println(p.prt); 에러발생 : protected 멤버변수는 같은 패키지 또는 자손 패키지의 경우만 가능
System.out.println(p.pub);
}
}