크게 두 가지 이유를 들 수 있는데, A클래스가 있는데 외부에서 필요한게 b 하나뿐이라고 쳐. 근데 c,d,e,f,g 는 내부에서만 쓸 필요가
있을때 그런게 자동완성에 굳이 노출될 필요 없잖아? 괜히 클래스 쓰려는 사람에게 혼동만 주지. 그래서 b 하나만 public으로 하고 나머지는 private으로 하는거지. 물론 이건 부수적 효과지만, 초보개념에서는 이런 느낌이 더 유용할 수 있지. 그리고 어떤 int값이 있는데, 이 값을 사용할때 10~20 사이의 숫자에서만 에러가 없다고 치자. 그런데 이걸 public으로 노출시키면 제한이 안되잖아? 그래서 public으로 나타나는 get/set 함수를 쓰고, private으로 숨겨지는 내부변수를 써서, get/set에서 제약을 걸 수 있지.
ㅇㅇㅇ(121.144)2017-08-20 20:29
set로는 10~20 사이의 값으로 제한하는 제약을 걸 수 있고, get으로는 그냥 내줄수도 있지만, 내부에서 사용하는 값과는 다르게 필요한 변경을 해줄수도 있는거고. 기본적으로 문자 그대로 "프라이버시"문제야. 내가 남에게 보여줘도 되는 것과 보여주기 싫은것. 그걸 정확하게 제한하고 싶으면 쓰는거지.
ㅇㅇㅇ(121.144)2017-08-20 20:31
ㄴ 어려운말로 도배해논 책백날보는거보다 형님이 설명해주시는 문장들이 훨씬 이해잘되네요
익명(116.34)2017-08-20 22:46
왜 프라이빗으로 해놓고 겟셋함수 만들어서 그걸 호출하는지 도무지 이해가 안갔는데 캡슐화를 위해 쓴다는 뜬구름잡는 소리듣다가 예시로 보니까 한방에 이해됨
클래스 안에서만 쓰는 메소드 선언할때
그게 encapsulation 아닌가? 속에 있는 내용이 밖으로 안 드러나게 하는 게
http://m.dcinside.com/view.php?id=programming&no=584174
크게 두 가지 이유를 들 수 있는데, A클래스가 있는데 외부에서 필요한게 b 하나뿐이라고 쳐. 근데 c,d,e,f,g 는 내부에서만 쓸 필요가 있을때 그런게 자동완성에 굳이 노출될 필요 없잖아? 괜히 클래스 쓰려는 사람에게 혼동만 주지. 그래서 b 하나만 public으로 하고 나머지는 private으로 하는거지. 물론 이건 부수적 효과지만, 초보개념에서는 이런 느낌이 더 유용할 수 있지. 그리고 어떤 int값이 있는데, 이 값을 사용할때 10~20 사이의 숫자에서만 에러가 없다고 치자. 그런데 이걸 public으로 노출시키면 제한이 안되잖아? 그래서 public으로 나타나는 get/set 함수를 쓰고, private으로 숨겨지는 내부변수를 써서, get/set에서 제약을 걸 수 있지.
set로는 10~20 사이의 값으로 제한하는 제약을 걸 수 있고, get으로는 그냥 내줄수도 있지만, 내부에서 사용하는 값과는 다르게 필요한 변경을 해줄수도 있는거고. 기본적으로 문자 그대로 "프라이버시"문제야. 내가 남에게 보여줘도 되는 것과 보여주기 싫은것. 그걸 정확하게 제한하고 싶으면 쓰는거지.
ㄴ 어려운말로 도배해논 책백날보는거보다 형님이 설명해주시는 문장들이 훨씬 이해잘되네요
왜 프라이빗으로 해놓고 겟셋함수 만들어서 그걸 호출하는지 도무지 이해가 안갔는데 캡슐화를 위해 쓴다는 뜬구름잡는 소리듣다가 예시로 보니까 한방에 이해됨