접근 제어자(Access Modifier)

소프트웨어의 각 구성요소(변수, 메서드 등)에 외부에서 접근할 수 있는 수준을 설정해두는 것으로, 이를 통해 프로그램을 더욱 정교하고 엄격하게 관리할 수 있게 해줌

접근 제어자 종류

Untitled

접근 제어자의 접근 범위

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);
	}

}

접근 제어자를 사용하는 이유