외부 코드
허용student.setAge(22)
차단student.age = -5
class Student
private
nameage
직접 접근 불가, 객체 내부 상태
public
getAge()setAge()
검증된 사용 약속
1 요청외부는 public 메서드만 호출합니다.
2 검증setAge가 범위를 검사합니다.
3 변경정상 값만 private age에 저장됩니다.
4 보호잘못된 값은 객체 상태에 들어오지 않습니다.
숨기는 것무결성을 깨뜨릴 수 있는 멤버 변수와 내부 구현 세부사항
공개하는 것외부가 안전하게 사용할 수 있는 작은 함수 약속
캡슐화는 단순히 감추는 기술이 아니라, 상태를 바꾸는 공식 경로를 하나로 모아 객체를 예측 가능하게 만드는 설계입니다.