자바는 4가지 종류의 접근 제어자를 제공한다.
private
: 모든 외부 호출을 막는다.default
: 같은 패키지 안에서 호출은 허용한다.protected
: 같은 패키지 안에서 호출은 허용한다. 패키지가 달라도 상속 관계 호출은 허용한다.public
: 모든 외부 호출을 허용한다.캡슐화는 데이터와 해당 데이터를 처리하는 메서드를 하나로 묶어서 외부에서의 접근을 제한하는 것을 말한다. 이때 접근 제어자를 활용하면 캡슐화를 더욱 견고히 할 수 있다. 이에 대한 방법은 크게 2가지이다.
public class BankAccount {
private int balance;
public BankAccount() {
balance = 0;
}
public void deposit(int amount) {
if (isAmountValid(amount)) {
balance += amount;
} else {
System.out.println("유효하지 않은 금액입니다.");
}
}
public void withdraw(int amount) {
if (isAmountValid(amount)) {
balance -= amount;
} else {
System.out.println("유효하지 않은 금액이거나 잔액이 부족합니다.");
}
}
public int getBalance() {
return balance;
}
private boolean isAmountValid(int amount) {
return amount > 0;
}
}
isAmountValid
는 내부에서만 필요한 기능이므로 외부로 노출시킬 필요가 없다.