데이터를 제한하여 밖에서 못쓰게 하는거까지는 좋았다.
hp도 함부로 다루지 못하게 private에 집어넣었는데
생각해보니까 hp는 화면에 출력해서 생명력이 얼마나 남았는지 보여주어야한다.
그러면 다시 hp를 public을로 바꾸어야 할까?
그래서 나온것이 getter setter이다.
이런식으로 hp에 대한 getter 와 setter을 만드는 것이다.
아니 이렇게 private에 있는 변수에 setter getter을 다 만들꺼면
뭐하러 힘들게 hp를 private에 넣은걸까?
어차피 수정 가능하고 가져올수있으면 걍 public에 넣으면 되는거 아닌가?
그렇다고 모든 변수를 다 setter, getter을 만들라는것은 아니고 적재 적소에 잘 사용하면된다. 어찌됬든 무분별한 public 사용보다 나으니까.
이렇게 데이터를 숨기는것을 정보은닉이라고하고
변수처럼 선언되지만
함수처럼 {}으로 묶이는데
저 안에다가 get,set을 지정해줄수있고
해당 변수가 get되는 상황에서는 (read) 자동으로 get에 있는 부분이 불리고
set되는 (write) 상황에서는 자동으로 set부분이 불린다.
아 역시 그럼 이게 hp를 퍼블릭에 때려박은거랑 무슨차이냐 하면..
요렇게 하면
외부에서 set이 불가능하다.
이런식으로 get,set을 원하느 기능만 넣을 수도있고..
또
이런식으로 get, set할때 내부에 특정 알고리즘을 넣어
실수로 100 이상이 들어올때 hp를 100으로 고정하여 에러를 미연에 방지할수있다.
그냥 public으로 때려박으면 이런 기능이 불가능하다.
'교육 노트 > C# 강의' 카테고리의 다른 글
[C# 때려잡기] C# 강의 21. this (0) | 2018.10.12 |
---|---|
[C# 때려잡기] C# 강의 20. 생성자와 소멸자 (0) | 2018.10.10 |
[C# 때려잡기] C# 강의 18.접근 지정자 (0) | 2018.10.08 |
[C# 때려잡기] C# 강의 17.객체지향과 클래스 (0) | 2018.10.04 |
[C# 때려잡기] C# 강의 16.객체지향 전에.. 간단한 구조체 (0) | 2018.10.04 |