getter와 setter를 만드는 이유가 뭔가요?
1244
작성한 질문수 1
값을 수정하고 받아들인 다는 의미는 알겠는데 언제 어떻게 사용하는지에 대해서 궁금합니다.
안만들면 안되는건가요?
답변 2
5
codesweaver님 글에 추가로 첨언을 드리면
자바 프레임워크들은 자바빈 프로퍼티 규약이라는 것을 주로 유지합니다.
관련해서 자바빈 프로퍼티 규약이라는 부분을 검색해보시면 도움이 되실거에요.
감사합니다.
5
개체(객체)지향 프로그래밍에서 개체는 상태(attribute)와 행동(method)을 갖고 있습니다. 그리고 개체는 자신의 상태에 대해 스스로 책임을 져야 하고 그러기 위해선 개체의 상태를 아무나 함부로 바꿀수 있으면 안됩니다. 바꿔야 한다면 개체 자기자신이 바꿔야 한다는 라고 이해하시면 됩니다. 그러서 멤버 변수를 private으로 선언하여 외부의 접근을 막는것입니다.
.
그럼, 다른 개체(B)가 이 개체(A)의 상태를 바꾸려면 어떻게 해야하느냐? B가 맘대로 바꾸는게 아니라, A에게 바꿔 달라고 요청해야 합니다. A는 요청을 받아들일 수 있고 받아들이지 않을 수 있습니다. 개체지향에서 개체는 객체(Object) + 주체성을 가진 존재로 보기 때문입니다.
.
보통 강좌에서 사용하는 예시는 모든 상태에 대해 getter와 setter를 제공하는 식으로 작성합니다. 이건 예제를 간단하게 만들기위한 방법으로 그렇게 하는것입니다. 실무에서는 getter는 모두 제공하나 setter는 기본적으로 제공하지 않고, 필요한 경우만 제공하는것을 원칙으로 하기도 합니다. (귀찮아서 그냥 모든 setter 제공하는 경우도 많지만... 이론과 현실의 괴리).
.
그리고 단순히 데이터를 묶어서 전달하는 용도로만 사용하는 클래스의 경우는 모든 속성에 getter/setter를 제공하기도 합니다. 메서드 하나 호출하는데 전달해야 하는 매개변수가 계속 무한정 늘어난다면면 보기도 좋지 않고('보기 좋다'는 개념은 개발에서 중요합니다?! ㅋㅋ) 간단하게 클래스에 담아서 전달하는 용도로 사용하는 거죠.
..
0
72
2
Unused property.....
0
98
2
project JDK is misconfigured
0
128
2
외부 API의 ID 타입(String/UUID)과 내부 도메인의 ID 타입(Long)이 불일치할 때의 설계 정석
0
81
2
단위/통합 테스트 버전충돌 문제
0
91
2
❗️springboot 4.0.2 버전 aspectj dependency 설정❗️
0
226
1
왜 컨트롤러는 변한게 없는데 새로 만든 html 파일이 뜨나요?
0
101
2
윈도우 build test오류 질문
1
102
2
테스트 관련 공부에 대한 조언을 얻고 싶습니다
0
98
2
테스트 실행 시 에러 질문
0
287
1
name을 통한 비교와 객체를 통한 비교
0
77
1
빌드 후 libs 없음
1
128
1
윈도우 gradlew.bat 에러
0
166
1
@PostMapping("/members/new")가 동작하지 않습니다
0
88
1
java static class와 kotlin class
0
77
1
스프링 DB연결
0
126
1
소요 시간
0
85
2
ddl.sql에 빨간 밑줄
1
101
2
welcome page 에러
0
180
3
잘 모르겠습니다.
0
160
2
fail을 똑같이 쳤는데 오류가 발생해요
0
156
2
index.html Welcome page
0
120
1
프로젝트 gradle-groovy ?
0
362
1
테스트코드 메서드명 한글
0
193
2





