본문 바로가기
security/코틀린

Kotlin - 11. 접근 제어

by aristia 2020. 7. 29.

11. 접근 제어

 

접근제어는 많은 언어에서도 사용되고 있다.

private를 사용하여 다른 클래스에서 이에 접근 가능을 고르는 것이다.

 

------------------------------------------------------------------------

 

이렇게 클래스를 만들어 보았다.

 

메인 함수에서 이 클래스의 객체에 접근할 수 있는데,
여기서 이렇게 아무렇게나 멤버변수를 변경할 수 있다.

 

그럼 이렇게 이름이 바뀐 것을 확인할 수 있다.

 

여기서는 문제가 될 것이 없어보이지만 다음을 보자

 

------------------------------------------------------------------------

 

접근 제어를 지정해주지 않을 때의 문제점

 

상으로 1000원을 주는 클래스가 있다고 하자.

 

그러나 메인 함수에서 2000원을 주기로 마음대로 변경하면

2000원이 상으로 지급되는 문제가 발생할 수 있다. 

 

------------------------------------------------------------------------

 

private

- 클래스 외부에서 접근이 불가능함

 

이렇게 멤버 변수 앞에 private를 적어주면 
외부에서의 접근이 불가능해진다.

다만, 이 클래스 내에 새롭게 함수를 만들어서
이 private 멤버 변수를 변경할 수는 있다.

 

메인 클래스에서 private로 되어있는 멤버변수에 접근하고자 할 때
이렇게 오류가 발생한다는 것을 확인할 수 있다.

 

또 외부에 이 기능을 공개하고 싶지 않을 때 이렇게 쓰기도 한다.

대신 함수 안에 그 private 함수를 사용할 수는 있다.

 

------------------------------------------------------------------------

 

실습 (기사 vs 몬스터)

 

기사 클래스는 다음과 같이 만들었다.

 

몬스터 클래스는 다음과 같이 만들었다.

 

그래서 메인 함수에서 기사 vs 몬스터를 진행해보았다.

 

그럼 이렇게 체력이 출력이 될 것이다.

 

그런데 이렇게 접근 제어자를 생성해주지 않았기 때문에
마음대로 변경이 가능해진다는 문제점이 발생한다.

 

마음대로 변경이 가능해진 결과이다.

 

그래서 멤버 변수에 private를 써주었다.

 

그랬더니 다음과 같이 멤버 변수에 접근이 불가능해졌다.

 

또한 heal을 아무때나 사용하는 것이 아니라,
공격을 당했을 때 사용하기 위해서 앞에 private를 적어준다.

 

그럼 기사가 마음대로 heal을 하지 못하게 할 수도 있다.

'security > 코틀린' 카테고리의 다른 글

Kotlin - 13. 인터페이스  (0) 2020.07.29
Kotlin - 12. 상속  (0) 2020.07.29
Kotlin - 10. 클래스  (0) 2020.07.29
Kotlin - 09. 반복문  (0) 2020.07.28
Kotlin - 08. Collection(2) - Mutable  (0) 2020.07.25

댓글