접근 제어자란 클래스 속성에 접근 권한을 제한해줌
public class Person {
private int age;
}
private
-> default
-> protected
-> public
순으로 보다 많은 접근을 허용
private
: 해당 클래스 내에서만 접근 가능default
: 해당 패키지 내에서만 접근이 가능protected
: 동일 패키지내의 클래스 또는 해당 클래스를 상속받은 외부 패키지의 클래스에서 접근이 가능public
: 동일 패키지내의 클래스 또는 해당 클래스를 상속받은 외부 패키지의 클래스에서 접근이 가능public class BankDriver {
public static void main(String[] args) {
// 사람 생성
Person p1 = new Person();
p1.name = "김신의"
// 오류!
}
}
private 변수라도 그 클래스 내에서는 사용이 가능하기 때문에, 그 클래스에 age를 사용하는 메소드를 쓰면 된다.
public class Person {
private int age;
public void setAge(int newAge) {
if (newAge > 0) {
age = newAge;
}
}
public int getAge() {
return age;
}
}
두 메소드 앞에는 public이라는 접근 제어자를 썼다. 변수 age는 숨기고 싶어서 private으로 설정했지만, **setAge
**와 **getAge
**는 다른 클래스에서도 사용하고 싶기 때문에 어디서든 접근 가능하게 해주는 public을 썼다.
public class Driver {
public static void main(String[] args) {
Person p1 = new Person();
p1.setAge(28);
p1.setAge(-10);
System.out.println(p1.getAge());
}
}
// 28