private → default → protected → public
private가 붙은 변수, 메소드는 해당 클래스에서만 접근 가능함
public class AccessModifier {
private String secret;
private String getSecret() {
return this.secret;
}
}
//다른 클래스에서는 secret 변수와 getSecret() 메소드 접근이 불가능하다
별도로 설정하지 않는다면 default로 설정되며 해당 패키지 내에서만 접근이 가능함
package test1;
public class Test {
String lastname = "kim"; //default 변수
}
public class Test2 {
String lastname = "park";
public static void main(String[] args) {
Test kim = new Test();
System.out.println(kim.lastname);
}
}
//Test의 lastname 변수는 접근제어자가 default이므로 Test2 클래스에서 접근이 가능함
protected가 붙은 변수, 메소드는 동일 패키지 내의 클래스 혹은 해당 클래스를 상속받는 외부 패키지의 클래스에서 접근 가능
어떤 클래스에서도 접근이 가능
💡 클래스 내의 클래스는 inner class라고 부르는데 이러한 inner 클래스에도 역시 접근제어자를 붙여서 접근을 제어할 수 있음