접근 제어자와 캡슐화
7. 정리
- 접근 제어자는
public > protected > default > private순으로 좁아진다. 필드는private에서 시작하고, 필요할 때만 넓힌다. 한번 연public은 닫기 어렵다. - 캡슐화의 목적은 불변식 보장이다. 상태를 바꾸는 통로를 검증된 메서드 몇 개로 제한하면, 외부 코드가 어떻든 객체는 항상 유효하다.
- getter/setter는 관례 이름(
getX/isX/setX)을 따르되 기계적으로 만들지 않는다. setter 대신deposit,cancel같은 업무 메서드를, 배열·컬렉션은 방어적 복사를. - 불변 객체(
private final+ setter 없음 + 새 객체 반환)는 공유·전달·멀티스레드에서 안전하다.final필드는 참조만 고정하므로 내용물 복사가 필요하다. - record는 불변 데이터 클래스의 생성자·접근자·equals·hashCode·toString을 자동 생성한다. 검증은 컴팩트 생성자에, 접근자는
name()형태. 상태가 변하는 객체는 일반 클래스.
초급 과정이 끝났습니다. 다음 중급 과정에서는 상속과 다형성, 인터페이스, 예외 처리, 컬렉션 프레임워크(ArrayList, HashMap), 제네릭을 배우며, 이 레슨의 캡슐화가 큰 시스템에서 어떻게 확장되는지 봅니다.