접근 제어자(access modifier)를 사용하여 변수나 메서드의 사용 권한을 설정할 수 있다.
접근 제어자는 private < default < protected < public순으로 많은 접근을 허용
접근 제어자가 private으로 설정되어있으면 private이 붙은 변수나 메서드는 해당 클래스 안에서만 접근 가능
public class Student {
private int studentNo;
private String name;
}
접근 제어자를 별도로 설정하지 않으면 변수나 메서드는 default 접근 제어자가 자동으로 설정돼 동일한 패키지 안에서만 접근 가능
house/HouseMoon.java
package house;
public class HouseMoon {
String lastName = "Moon"; // lastName은 default
}
house/HouseYoun.java
package house;
public class HouseYoun {
String lastName = "Youn";
public static void main(String[] args) {
HouseMoon moon = new HouseMoon();
System.out.println(moon.lastName); // HouseMoon 클래스의 lastName 변수 사용 가능
}
}
접근 제어자가 protected로 설정되어있다면 protected가 붙은 변수나 메서드는 동일 패키지의 클래스 또는 해당 클래스를 상속받은 클래스에서만 접근이 가능
house/HouseMoon.java
package house;
public class HouseMoon {
protected String lastName = "Moon";
}
house/person/ShMon.java
package house.person; // 패키지 다름
public class ShMon extends HouseMoon { // HouseMoon 상속
public static void main(String[] args) {
ShMon shm = new ShMon();
System.out.println(shm.lastName); // 상속한 클래스의 protected 접근 가능
}
}
접근 제어자가 public이면 어떤 클래스에서도 접근이 가능하다.