접근 제어자란 클래스 속성에 접근 권한을 제한해줌

public class Person {
    private int age;
}

private -> default -> protected -> public 순으로 보다 많은 접근을 허용

public class BankDriver {
    public static void main(String[] args) {
        // 사람 생성
        Person p1 = new Person();
        p1.name = "김신의"
				// 오류!
    }
}

setter/getter

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