728x90
반응형
스코프
: 변수나 함수, 클래스 같은 멤버들을 서로 공유하여 사용할 수 있는 범위를 지정해 둔 단위
스코프가 지정되는 범위 - 패키지 내부, 클래스 내부, 함수 내부 등
하나의 패키지 안에 변수, 함수, 클래스가 있는데 함수, 클래스에 또 다른 변수, 함수가 있다면 패키지 스코프 안의 또 다른 하위 스코프로 동작하게 된다.
스코프의 세 가지 규칙
1. 스코프 외부에서는 스코프 내부의 멤버를 참조연산자로만 참조 가능하다.
com.google.dimo.A → com.google.dimo 안에 있는 A라는 이름의 멤버 참조
2. 동일 스코프 내에서는 멤버들을 공유할 수도 있다.
val a = "패키지 스코프"
class B{
fun print(){
println(a)
}
}
fun main(){
println(a) // 패키지 스코프
B().print() // 패키지 스코프
}
3. 하위 스코프에서는 상위 스코프의 멤버를 재정의 할 수 있다.
val a = "패키지 스코프"
class B{
fun print(){
println(a)
}
}
fun main(){
val a = "함수 스코프"
println(a) // 함수 스코프
B().print() // 패키지 스코프
}
접근제한자
: 스코프 외부에서 스코프 내부에 접근할 때 그 권한을 개발자가 제어할 수 있는 기능
종류 - public / internal / private / protected
변수, 함수, 클래스 선언 시 맨 앞에 붙여 사용
private var a = “…”
public fun b{ … }
internal class C { … }
기능
패키지 스코프에서
- public(기본값) : 어떤 패키지에서도 접근 가능
- internal : 같은 모듈 내에서만 접근 가능
- private : 같은 파일 내에서만 접근 가능
* protected는 패키지 스코프에서 사용하지 않음
클래스 스코프에서
- public(기본값) : 클래스 외부에서 늘 접근 가능
- private : 클래스 내부에서만 접근 가능
- protected : 클래스 자신과 상속받은 클래스에서 접근 가능
* internal은 클래스 스코프에서 사용하지 않음
728x90
반응형
'Language > Kotlin' 카테고리의 다른 글
[Kotlin] 스코프 함수 (0) | 2023.09.07 |
---|---|
[Kotlin] 고차함수와 람다함수 (0) | 2023.09.07 |
[Kotlin] 기본 프로젝트 구조 (0) | 2023.09.05 |
[Kotlin] 오버라이딩, 추상화, 인터페이스 (0) | 2023.09.05 |
[Kotlin] 클래스의 상속 (0) | 2023.09.05 |