[Kotlin] 스코프, 접근제한자 설명 & 예제
- Language/Kotlin
- 2021. 2. 2.
728x90
코틀린의 프로젝트 구조 내에서 변수나 함수, 클래스의 '공용범위' 를 제어하는 단위인 스코프와 스코프 외부에서 내부로 접근을 제어하는 접근 제한자에 대해서 설명
스코프
- 범위
- 언어 차원에서 변수나 함수, 클래스 같은 '멤버'들을 서로 공유하여 사용할 수 있는 범위를 지정해 둔 단위
- 패키지 내부, 클래스 내부, 함수 내부 등
스코프의 3가지 규칙
- 스코프 외부에서는 스코프 내부의 멤버를 '참조 연산자'로만 참조가 가능함
- a.eat()
- com.google.example.A
- 동일 스코프 내에서는 멤버들을 '공유'할 수 있음
//패키지 명시하지 않으면 default pakage val a = "패키지 스코프"
class B {
fun print(){
println(a)
}
}
fun main() {
println(a)
B().print()
}
3. 하위 스코프에서는 상위 스코프의 멤버를 재정의 할 수 있음
원래 같은 스코프에서 같은 이름의 멤버를 만들면 안됨
//패키지 명시하지 않으면 default pakage
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 클래스 자신과 상속받은 클래스에서 접근 가능
스코프는 멤버들의 가용범위를 지정해둔 단위로 개발자의 의도에 따라 스코프 안의 변수나 함수, 클래스를 배치할 수 있으며 접근 제한자는 이러한 스코프의 외부 와 내부에서 사용할 멤버를 분리하여 스코프 외부에서 건드리지 말아야 할 기능이나 값들을 안전하게 제한하는 용도를 가지고 있다.
728x90
'Language > Kotlin' 카테고리의 다른 글
[Kotlin] 람다 함수 보충 설명, 스코프 함수 설명 & 예제 (0) | 2021.02.03 |
---|---|
[Kotlin] 고차함수, 람다함수 설명 & 예제 (0) | 2021.02.03 |
[Kotlin] 코틀린의 기본 프로젝트 구조 설명 & 예제 (0) | 2021.02.02 |
[Kotlin] 오버라이딩, 추상화, 인터페이스 설명 & 예제 (0) | 2021.02.01 |
[Kotlin] 클래스의 생성자, 상속 설명 & 예제 (0) | 2021.02.01 |