본문 바로가기
원리 이해

Getter, Setter를 사용하는 이유

by 판순퐁 2022. 1. 4.

일반적으로 프로그래밍을 할 때,

객체들의 데이터(필드)를 외부에서 직접적으로 접근하는 것 막아놓습니다.

 

필드들을 private 접근 제한자로 막아두고,

각 필드의 Getter, Setter로 접근하는 방식을 사용합니다.

 

이렇게 프로그래밍 하는 이유는 객체의 무결성을 보장하기 위함입니다.

*무결성: 객체의 정확성과 일관성

 

 

예를들어 Man이라는 클래스에 weight(몸무게)라는 필드가 존재할 때

weight는 0보다 작을 수 없으나, 

 

외부에서 직접적으로 접근할 경우,

weight에 -100이라는 값을 줌으로써 객체의 무결성이 깨지는 일이 발생합니다.

 

 

 

이를 방지하기 위해,

필드를 private로 만들어 외부의 접근을 제한한 후,

Setter를 사용해 전달받은 값을 내부에서 가공 필드에 넣어주는 방식을 사용하고

 

마찬가지로 필드 값을 가져올 때도,

Getter를 사용해 본 필드의 값을 숨긴 채

내부에서 가공된 값을 꺼낼 수 있습니다.

 

 

즉,

 

메소드를 통해 데이터에 접근하기위한 목적입니다. new People().weight 으로 데이터에 접근해 데이터위주로 코딩하는 방식이 절차지향입니다. getter/setter 를 사용하게 되면 객체지향을 사용함으로써 얻게되는 원자성, 캡슐화 등의 이득이 있습니다. 이를 java빈 규약이라고 정하고 하나의 코딩컨벤션으로 권고합니다.