• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

TestEntityApi중 createTestEntity에서 질문있습니다

24.02.28 20:13 작성 조회수 94

0

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

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

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

답변 2

·

답변을 작성해보세요.

1

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.03.01

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

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

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

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

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

0

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

 

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