하자 Haja

2. 접근 제한자 (비밀과 공개)

남들이 내 객체의 속을 함부로 들여다보지 못하게 막아봅시다!

내가 만든 객체의 속성과 기능을 남들이 밖에서 함부로 건드리지 못하게 하고 싶다면 어떡할까요? 하자는 동사의 **꼬리(어미)**만 살짝 바꿔주면 아주 쉽게 비밀을 지킬 수 있어요.

  • 공개 (Public): 널리 쓰일 때는 정하자 / 만들자
  • 비밀 (Private): 나 혼자 몰래 쓸 때는 정하여 숨기자 / 만들어 숨기자 (밖에서 부르면 에러가 나요!)
  • 보호 (Protected): 내 자식에게만 알려줄 때는 정하여 물려주자 / 만들어 물려주자
[금고]를 설계하자:
    (참고) 이 비밀번호는 금고 밖에서 절대로 볼 수 없어요!
    '비밀번호'를 [숫자]인 1234로 정하여 숨기자

    <비밀번호확인>을 만들어 숨기자 ('입력값'):
        만약 ('나'의 '비밀번호'와 '입력값'이 같다) 라면:
            참을 돌려주자
        거짓을 돌려주자

    <금고열기>를 만들자 ('입력값'):
        만약 ('나'의 <비밀번호확인>('입력값')이 참과 같다) 라면:
            "찰칵! 금고가 열렸습니다."를 출력하자
        그렇지 않다면:
            "경고! 비밀번호가 틀렸습니다."를 출력하자

'내금고'를 [금고]인 [금고]()로 정하자
'내금고'의 <금고열기>(9999)를 실행하자
'내금고'의 <금고열기>(1234)를 실행하자

이렇게 하면 밖에서 실수로 남의 비밀번호를 바꾸거나 훔쳐보는 불상사를 깐깐하게 막아낼 수 있답니다.


금지된 선을 넘으면 어떻게 될까요?

만약 밖에서 억지로 숨겨진(비밀) 기능을 부르려고 하면 하자가 무서운 에러를 내며 막아준답니다. 아래 코드를 쳐서 직접 에러를 구경해 볼까요?

[비밀노트]를 설계하자:
    '내일기'를 [문자열]인 "오늘은 늦잠을 잤다"로 정하여 숨기자

    <일기읽기>를 만들어 숨기자 ():
        '나'의 '내일기'를 출력하자

'내노트'를 [비밀노트]인 [비밀노트]()로 정하자

(참고) 앗! 밖에서 몰래 일기를 읽으려고 하면 에러가 발생해요!
'내노트'의 <일기읽기>()를 실행하자

이 코드를 실행하면 “AccessViolationError: ‘일기읽기’ 기능은 내부 전용(private)이라 외부에서 부를 수 없어요.” 라는 빨간 에러 메시지가 뜨면서 실행이 중단될 거예요!

놀이터 (Playground)

터미널
코드를 작성하고 '실행' 버튼을 눌러보세요.