코틀린 강좌 #12 변수, 함수, 클래스의 접근범위와 접근제한자

Kotlin/기본 문법 · 2020. 12. 19. 11:57

테크과학! DiMo

 

테크과학! DiMo

개발자가 얘기하는 생활 속 IT기술에 대한 과학! 여러분이 몰랐던, 혹은 정확히 알지 못했던 IT 테크놀러지를 파드립니다! 좋은 영상을 위한 채널 후원, 투네이션을 통해서 해주세요! 후원링크 htt

www.youtube.com

 

 

개발 환경: play.kotlinlang.org


 


스코프란

 

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

 

 

 

스코프가 지정되는 범위

 

패키지 내부, 클래스 내부, 함수 내부

 

 

 

스코프 3가지 규칙

 

 

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

 


2. 동일 스코프 내에서는 멤버들을 '공유'할 수 있다.

 


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

 

 

val a = "패키지 스코프"

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

Output:
패키지 스코프
패키지 스코프

 

 

접근 제한자란?

 


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

 

종류


public

 

internal

 

private

 

protected

 

 

 

패키지 스코프에서는


public(기본값) : 어떤 패키지에서도 접근 가능


internal: 같은 모듈 내에서만 접근 가능


private: 같은 파일 내에서만 접근 가능


*protected는 패키지 스코프에서는 사용하지 않음 

 

 


클래스 스코프에서는


public(기본값) : 클래스 외부에서 항상 접근 가능


private : 클래스 내부에서만 접근 가능


protected : 클래스 자신과 상속받은 클래스에서 접근 가능


*internal은 클래스 스코프에서는 사용하지 않음