이유는 OOP 3대 특성 중 하나인 캡슐화를 구현하기 위해서
이렇게 이론적으로만 주입식 교육 당했다면, 이딴거 왜 만들어야하냐 이런 생각 충분히 할 수 있음
그건 개발 경험이 없어서 그럼
실효적인 이유는 이거임
- getter는 반드시 멤버변수만 get 해오는 게 아님. 그 클래스가 실제로 갖고 있지 않은 값을 get 해올 수도 있음.
ex) Student라는 클래스가 있고 이 Student는 과목 점수에 대한 멤버변수만 갖고 있고, 그 점수를 계산하여 등급을 도출하는 getGrade를 만들 수도 있음.
- setter는 예외처리가 가능함. 특정 값이 들어오면 대입을 무효화 시킬 수도 있음.
시험 점수가 100점이 만점이라고 치자. 그런데 SetScore()에 -1000이나, +1000이 들어오게 된다면?
SetScore()함수에서 예외 처리 해주면 끝나는 걸 이걸 '=' 해주는 코드마다 다해줄거임?
- 상속 쓰면 getter와 setter도 재정의 가능함. 즉 멤버변수를 재정의하는 효과를 가질 수 있음
특) 필요한경우만 get메소드 만들면됨 요즘 나오는 언어는 의미없이 리턴해주면 getter쓰지 말라고 경고띄줌
당연하지 기계적으로 생각도 없이 모든 private 멤버에다 다 만드는 게 아니라, 필요해질 때 그때 만들어야지