자.
클래스에는 멤버 변수가 있지.
근데 멤버 변수를 수정하거나 그 데이터를 가져올 때, 객체.name 이렇게 접근하지 않고
public getter(){} 혹은 public setter(){} 함수를 만들어서 가져오게 돼.
근데 굳이 왜 그러는걸까?
생각해보자.
만약에 멤버 변수에 직접 접근해서 값을 바꿀 수 있게 된다면, 휴먼 에러가 발생할 확률이 있어.
예를 들어서, 객체.name에는 반드시 string인 이름만 들어가야 하는데, decimal인 숫자를 집어넣는다든지
객체.age에는 자연수만 들어가야 하는데 음수가 들어간다든지, 이런걸 걸러낼 수가 없는거야.
그래서 setter 함수에서
if (age>0) :
pass
else :
fail
이렇게 예외 처리를 하는거지.
그러면 멤버 변수에 바로 접근하는건 막고 메소드로 접근하는 것만 허가해야 될 것 아냐?
그래서 멤버 변수 자체에 private을 걸어두는거야.
그러면 객체가 갖고 있는 메소드만 접근이 가능하니까.
그래서 메소드는 누구나 쓸 수 있게 public으로 걸어두는거고.
이렇게 하다보니까 당연히 getter도 만들어서 쓸 수밖에 없는거야.
왜냐하면 멤버 변수가 setter만 접근할 수 있게 하기 위해서 private를 설정해놨으니까
일반적인 방법으로는 접근해서 값을 가져올 수 없거든.
그리고 또 getter를 만들었을 때 좋은 점은, 멤버 변수의 값을 가져와서 내가 가공해서 리턴할 수 있다는 것도 있지.
끝!
최근댓글