이유는 OOP 3대 특성 중 하나인 캡슐화를 구현하기 위해서

이렇게 이론적으로만 주입식 교육 당했다면, 이딴거 왜 만들어야하냐 이런 생각 충분히 할 수 있음

그건 개발 경험이 없어서 그럼


실효적인 이유는 이거임


- getter는 반드시 멤버변수만 get 해오는 게 아님. 그 클래스가 실제로 갖고 있지 않은 값을 get 해올 수도 있음.

ex) Student라는 클래스가 있고 이 Student는 과목 점수에 대한 멤버변수만 갖고 있고, 그 점수를 계산하여 등급을 도출하는 getGrade를 만들 수도 있음.


- setter는 예외처리가 가능함. 특정 값이 들어오면 대입을 무효화 시킬 수도 있음.

시험 점수가 100점이 만점이라고 치자. 그런데 SetScore()에 -1000이나, +1000이 들어오게 된다면?

SetScore()함수에서 예외 처리 해주면 끝나는 걸 이걸 '=' 해주는 코드마다 다해줄거임?


- 상속 쓰면 getter와 setter도 재정의 가능함. 즉 멤버변수를 재정의하는 효과를 가질 수 있음