Kotlin 문법과 예제 10 - 변수, 함수, 클래스의 접근범위와 접근제한

강유리 (Rein)·2023년 4월 11일
0

Kotlin

목록 보기
10/10

스코프

스코프는 언어 차원에서 변수나, 함수 클래스와 같은 멤버들을 서로 공유하여 사용할 수 있는 범위를 지정해둔 단위이다.

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

하나의 패키지 안에 변수, 함수, 클래스가 있다면 이것들은 모두 하나의 스코프 안에 있는 멤버이다. 그러나 다시 함수나 클래스 안에 변수나 함수가 있다면

패키지 스코프 안에 또 다른 하위 스코프로 들어간다.

스코프 규칙

  • 스코프 외부에서는 스코프 내부의 멤버를 참조 연산자로만 참조가 가능하다.

    클래스의 멤버 참조 시 클래스 외부에서 인스턴스명에 참조 연산자를 사용해 접근한 것

    a.eat()
  • 동일 스코프 내에서는 멤버들을 공유할 수 있다.

  • 하위 스코프에서는 상위 스코프 멤버를 재정의 할 수 있다.

    	```
      val a = "패키지 스코프"

    class B {
    val a = "클래스 스코프"

      fun print(){
          println(a)
      }

    }

    fun main() {
    val a = "함수 스코프"
    println(a)
    B().print()
    }
    //함수 스코프
    //클래스 스코프

    	```

접근 제한자

: 스코프 외부에서 스코프 내부에 접근 시 그 권한을 개발자가 제어할 수 있는 기능

  • public
  • internal
  • private
  • protected

변수, 함수, 클래스 선언 시 맨 앞에 붙여서 사용

패키지 스코프에서 사용하는 기능

  • public(기본값) : 어떤 패키지에서도 접근 가능
  • internal : 같은 모듈 내에서만 접근 가능
  • private : 같은 파일 내에서만 접근 가능

클래스 스코프에서 사용하는 기능

  • public(기본값) : 어떤 클래스에서도 접근 가능
  • private : 같은 클래스 내에서만 접근 가능
  • protected : 클래스 자신과 상속받은 클래스에서 접근 가능

스코프의 용도

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

참고자료
디모의 코틀린 강좌

profile
(멋쨍이) Android Developer (하고싶다)

0개의 댓글