티스토리 뷰
범위(Scope)
• 변수를 사용할 수 있는 범위, 영역
• 변수, 함수, 클래스, 패키지 등의 범위가 있다.
• 보통, 변수가 선언된 그 블록({ }로 둘러쌓인 범위)이 변수의 스코프이다.
- 즉, 한 블록 안에서 선언된 변수는 그 안에서만 사용이 가능하다.
• 스코프 내부에 또 스코프가 있다면, 상위 스코프, 하위 스코프로 나뉜다.
- 하위 스코프에서는 상위 스코프 멤버를 사용 및 (재)할당 할 수 있지만 반대는 안 된다.
// 변수 사용 가능 범위
fun func1() {
val NUM1 = 1
}
println(NUM1) // 오류 발생 : NUM1은 없는 변수 -> NUM1 변수의 사용 가능 범위는 func1 함수의 블럭({ }) 안.
// 상위 스코프와 하위 스코프
var outsideNum = 1
fun changeNumber() {
outsideNum = 20 // 하위 스코프에서는 상위 스코프의 변수에 접근 및 할당 가능
val outsideNum = 10
println(outsideNum) // 10 출력 : 하위 스코프의 outsideNum과 상위 스코프의 outsideNum은 다른 변수
}
println(outsideNum) // 20 출력
* 즉, 스코프는 개발자의 의도와 상관없이 자동으로 변수 접근의 제한이 생긴다.
접근 제한자
• 개발자의 의도에 따라 접근의 제한 정도를 정할 수 있다.
• public, internal, private, protact 가 있다.
• 변수, 함수, 클래스 선언 시 맨 앞에 적어준다.
ex) private val number: Int = 10
• 패키지에서의 접근 제한자
- public -> 패키지 외부에서 접근 가능 ( = 어디에서나 접근 가능)
- internal -> 같은 모듈 안에서 접근 가능
- protected -> 사용 안 함
- private -> 같은 파일 안에서만 접근 가능
• 클래스에서의 접근 제한자
- public -> 클래스 외부에서 접근 가능
- internal -> 사용 안 함
- protected -> 클래스 내부와 상속받은 클래스에서 접근 가능
- private -> 클래스 내부에서만 사용 가능
• 주로 사용하는 접근 제한자 키워드
- public, private
• 접근 제한자를 명시하지 않으면 기본적으로 public이다.
class Numbers(private var number: Int = 10) { // number 프로퍼티 private로 선언
fun changeNumber() {
this.number = 100 // private는 class 내부에서 접근 가능
}
}
val numbers = Numbers()
numbers.number = 1000 // 오류 발생 : private는 클래스 외부에서 접근 불가
class Numbers2(var number: Int = 10) {} // 접근 제한자 명시하지 않으면 number 프로퍼티 public으로 자동 선언
val numbers2 = Numbers2()
println(numbers2.number) // 10 출력 : public은 class 내부에서도 접근 가능
numbers2.number = 100
println(numbers2.number) // 100 출력 : get / set 둘 다 됨
이 글은
패스트 캠퍼스 Android 앱 개발의 정석 with Kotlin 올인원 패키지 Online
강의를 듣고 공부한 내용을 바탕으로 작성되었습니다.
'📱 Android > 💻 Kotlin' 카테고리의 다른 글
[Android/Kotlin] 18. 형변환 (0) | 2022.10.13 |
---|---|
[Android/Kotlin] 17. 상속 (0) | 2022.10.12 |
[Android/Kotlin] 15. 클래스 2편 (2) | 2022.10.12 |
[Android/Kotlin] 14. 클래스(Class) (1) | 2022.10.11 |
[Android/Kotlin] 13. 일급 시민, 고차 함수, 람다식 (0) | 2022.10.07 |