**Encapsulation(캡슐화)**은 데이터와 그를 다루는 메서드를 하나의 단위(class) 안에 묶고, 내부 상태를 숨겨서 통제된 공개 인터페이스 뒤에 두는 것을 의미합니다. 호출자는 원시 필드를 직접 건드리는 대신 메서드를 통해 상호작용합니다.
상태를 숨기는 이유
누구나 필드를 직접 변경할 수 있다면, 객체가 유효한 상태를 유지한다고 결코 보장할 수 없습니다. Encapsulation은 class가 자신의 불변식을 강제할 수 있게 합니다.
java
{
balance;
{
(amount <= )
();
(amount > balance)
();
balance -= amount;
}
{ balance; }
}
