Kotlin

[Kotlin] 변수, 함수, 클래스의 접근범위와 접근제한자

98kg 2024. 3. 12. 19:06
scope란?? 

말 그대로 범위라는 뜻으로 변수나 함수 클래스 같은 멤버들을 서로 공유하여 사용할 수 있는
범위를 지정해둔 단위이다

 

패키지안의 변수 함수 클래스는 하나의 스코프이고

함수 클래스 안에 있는 변수 함수는 또 다른 하위 스코프가 됩니다

 

3가지 규칙

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

  -   import 또는 a.eat() 의 . 부분

2.

var a = "패키지 스코프"

class B{
    fun print(){
      println(a)
    }
}

fun main() {
    println(a)
    B().print()
}

 

이 코드를 실행해 보면 변수 a는 클래스 B 나 main 함수에 속해 있지는 않지만 

동일한 스코프 내에서 변수를 공유하여 사용할 수 있는 것을 볼 수있다.

 

3. 하위 스코프 내에선 상위 소코프에서 정외된 멤버를 재정의 할 수있다

원래 동일 레벨에 스코프에선 같은 이름의 멤버를 정의해선 안된다.

var a = "패키지 스코프"

class B{
    fun print(){
      println(a)
    }
}

fun main() {
	var a = "함수 스코프"
    println(a)
    B().print()
}

 

 


접근제한자

 

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

패키지 스코프

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

클래스 스코프

  • public : 클래스 외부에서 늘 접근 가능
  • private : 클래스 내부에서만 접근가능
  • protect: 클래스 자신과 상속받은 클래스에서 접근 가능