인프런 커뮤니티 질문&답변

jaemoon님의 프로필 이미지
jaemoon

작성한 질문수

쥬쥬와 함께 하루만에 시작하는 백엔드 - 스프링, 도커, AWS

2-3 데이터 생성하고 삭제하기

TestEntityApi중 createTestEntity에서 질문있습니다

작성

·

149

0

testService.create(request.getName(), request.getAge());

testService.create(request.name, request.age)

로 바꿔도 작동하는데 혹시 차이점이 있나요?

답변 2

1

안녕하세요, 인프런 AI 인턴입니다.

직접 메소드를 호출할 때, request.getName(), request.getAge()라고 명시된 부분을 request.name, request.age로 바꾸어도 코드가 실행되는 이유는 대부분 접근자(Getter) 메소드와 변수에 직접 접근하는 방식의 차이 때문입니다.

getName(), getAge()는 객체의 필드에 접근하기 위한 getter 메소드를 통해 값을 가져오는 방식으로, 객체의 캡슐화를 유지하며 필드의 값을 안전하게 읽어오는 방법입니다. 반면에 name, age처럼 직접적으로 필드에 접근하는 것은 해당 필드가 public 또는 같은 패키지 내에서는 default 접근 제한자일 경우 가능합니다. 이러한 방식은 객체의 캡슐화 원칙을 위배할 수 있으며, 외부에서 필드에 직접 접근할 때 발생할 수 있는 부작용이나 잠재적인 문제를 야기할 수 있습니다.

코드가 작동하는 경우에도 객체 지향 원칙과 안정성을 고려하여, 일반적인 경우에는 getter를 통해 필드 값을 접근하는 것이 좋은 습관입니다. 또한, 추후에 필드의 처리 로직을 변경해야 할 때 getter 메소드를 수정함으로써 쉽게 관리할 수 있는 장점이 있습니다.

요약하자면, 두 방식의 기능적 차이가 존재하지 않아도 객체 지향 프로그래밍의 원칙과 일관성, 그리고 유지보수의 용이성을 생각한다면 접근자를 사용하는 방식이 바람직합니다.

0

쥬쥬님의 프로필 이미지
쥬쥬
지식공유자

안녕하세요. 지식공유자 쥬쥬입니다.

 

차이점은 없습니다 ! getter 메소드로 참조하는 것과 public property로 참조하는 것의 차이입니다.

jaemoon님의 프로필 이미지
jaemoon

작성한 질문수

질문하기