Java에서 Getter와 Setter를 사용해야 하는 이유와 캡슐화 쉽게 이해하기
Java 개발자라면 누구나 한번쯤 getter와 setter 메서드를 작성해 보았을 것입니다. 하지만 정작 왜 이러한 패턴을 사용하는지 깊이 생각해 본 적이 있으신가요? 이 글에서는 객체지향 프로그래밍의 핵심 원칙인 캡슐화와 함께 getter/setter의 필요성과 장점을 알아보겠습니다. 객체지향 설계 // 잘못된 방식 ( 외부에서 직접 접근 가능 ) public class Person { public String name ; } // 올바른 방식 ( 외부에서 getter 와 setter 를 통해서만 접근 가능 ) public class Person { private String name ; // private 로 선언하여 외부 접근 차단 public String getName () { return name ; } public void setName (String name) { this . name = name; } } 캡슐화(Encapsulation) 객체지향의 4가지 특징 중 하나인 캡슐화는 데이터(속성)와 그 데이터를 다루는 코드(기능)를 하나로 묶고, 외부에서 데이터를 함부로 바꾸지 못하게 보호하는 것입니다. 위 예제에서 보면 name이라는 변수가 데이터라고 볼 수 있습니다. getName과 setName은 데이터를 다루는 코드라고 볼 수 있습니다. 데이터와 데이터를 다루는 코드가 하나로 묶여 있습니다. 변수의 접근제어자를 private으로 선언했기 때문에 외부에서 데이터를 함부로 바꿀 수 없습니다. 변수의 접근제어자를 private으로 바꾸고, getter/setter를 만드는 이 일반적인 방법은 이 캡슐화를 하기 위함입니다. 단일 책임 원칙 (SRP) getter와 setter는 데이터 접근 및 수정 책임을 클래스 내부에 집중시켜, 외부 코드가 데이터 조작 로직을 알 필요 없게 합니다. 외부에서 직접 변수에 접근하면, 데이터 검증 로직을 추가할 때마다 모든 호출 코드를 수...