기록
[코틀린/Kotlin] 접근범위와 접근제한자 본문
변수나 함수, 클래스의 '공용 범위'를 제어하는 단위인 스코프와, 스코프 외부에서 스코프 내부로의 접근을 제한하는 접근제한자에 대해 알아보자.
1. 스코프
변수나 함수, 클래스와 같은 멤버들을 서로 공유하여 사용할 수 있는 범위를 지정해 둔 단위
1. 스코프 외부에서는 스코프 내부의 멤버를 '참조연산자'로만 참조가 가능하다.
(클래스의 멤버를 참조할 때 클래스 외부에서 a.eat() 과 같이 접근)
2. 동일 스코프 내에서는 멤버들을 공유할 수 있다.
val a = "패키지 스코프"
class B {
fun print() {
println(a)
}
}
fun main() {
println(a)
B().print()
}
default pakage에서 만드는 모든 멤버들은 같은 패키지 스코프에 포함된다.
변수 a는 클래스 B나 main함수에 속해 있지는 않지만 동일한 스코프 내에서 변수를 공유하여 사용할 수 있다.
3. 하위 스코프에서는 상위 스코프의 멤버를 재정의할 수 있다.
val a = "패키지 스코프"
class B {
val a = "클래스 스코프"
fun print() {
println(a)
}
}
fun main() {
val a = "함수 스코프"
println(a)
B().print()
}
상위 스코프에 있던 변수 a를 참조하지 않고 각각의 스코프에 있는 값을 참조하는 것을 볼 수 있다.
2. 접근 제한자
스코프 외부에서 스코프 내부에 접근할 때 권한을 '개발자가 제어'할 수 있는 기능이다.
1. 패키지 스코프
public : 어떤 패키지에서도 접근 가능 (기본값)
internal : 같은 모듈 내에서만 접근 가능
private : 같은 파일 내에서만 접근 가능
2. 클래스 스코프
public : 클래스 외부에서 접근 가능 (기본값)
private : 클래스 내부에서만 접근 가능
protected : 클래스 자신과 상속받은 클래스에서 접근 가능
3. 정리
스코프는 멤버들의 가용 범위를 지정해둔 단위로 개발자는 스코프 안에 변수나 함수, 클래스를 배치할 수 있다.
접근 제한자는 이러한 스코프의 외부와 내부에서 사용할 멤버를 분리하여 스코프 외부에서 건드리지 말아야 할 기능이나 값들을 안전하게 제한하는 용도이다.
https://www.youtube.com/watch?v=q7GV68jKLVM&list=PLQdnHjXZyYadiw5aV3p6DwUdXV2bZuhlN&index=13
위 강의를 보면서 개인적으로 공부한 내용을 정리하였습니다.
'[Study] > Kotlin' 카테고리의 다른 글
[코틀린/Kotlin] Object, Companion Object (0) | 2022.05.08 |
---|---|
[코틀린/Kotlin] 람다함수의 특별한 케이스(it), 스코프 함수(apply, run, with, also, let) (0) | 2022.05.07 |
[코틀린/Kotlin] 고차함수와 람다함수 (0) | 2022.05.07 |
[코틀린/Kotlin] 기본 프로젝트 구조 (0) | 2022.05.06 |
android 색상이 안먹을 때 (0) | 2021.09.27 |