본문 바로가기
코틀린

코틀린(12) - 스코프, 접근제한자

by 왈레 2022. 3. 21.

스코프

스코프가 지정되는 범위는 패키지내부, 클래스내부, 함수내부 등이 있다

스코프에 대한 3가지 규칙

  1. 스코프 외부에서는 스코프 내부의 멤버를 '참조연산자'로만 참조가 가능하다 a.eat( ) *클래스의 멤버 참조할 클래스 외부에서 인스턴스명의 참조연산자(.) 사용하여 접근하는것, 생각해보면 하나의 패키지에서 다른 패키지 내의 멤버를 참조 때도 import.com.google.dimo improt연산자와 참조연사자를 사용했어야 했다.
  2. 동일 스코프 내에서는 멤버들을 '공유' 있다.
  3. 하위 스코프에서는 상위 스코프의 멤버가 가려진다.

 

접근제한자

접근제한자는 스코프 외부에서 스코프 내부에 접근할 권한을 '개발자가 제어' 있는 기능이다.

접근제한자에는 4가지 존재한다.

  • public
  • internal
  • private
  • protected

접근제한자들은 변수(private var a = "…"), 함수(public fun b{..}), 클래스(internal class C {..}) 선언시 앞에 붙여 사용한다.

 

상황에 따라 두가지 경우로 기능이 나뉘는데,

패키지 스코프

  • public(기본값) : 어떤 패키지에서도 접근 가능
  • internal : 같은 모듈 내에서만 접근 가능
  • private : 같은 파일 내에서만 접근 가능
  • protected(x) : 패키지 스코프에서 사용하지않음!

 

클래스 스코프

  • public(기본값) : 클래스 외부에서 접근 가능
  • private : 클래스 내부에서만 접근 가능
  • protected: 클래스 자신과 상속받은 클래스에서 접근 가능
  • internal(x) : 클래스 스코프에서 사용하지 않음!

 

스코프는 멤버들의 가용 범위를 지정해 단위로 개발자는 의도에 따라 스코프 안에 변수나, 함수, 클래스를 배치할 있으며, 접근 제한자는 이러한 스코프의 외부와 내부에서 사용할 멤버를 분리하여 스코프 외부에서 건드리지 말아야 기능이나 값들을 완전하게 제한하는 용도를 가지고 있다.

댓글