Kotlin 강좌 13 - 변수, 함수, 클래스의 접근범위와 접근제한자

dyeon-dev·2023년 10월 9일
0

Kotlin

목록 보기
9/17
post-thumbnail

코틀린은 자바와 달리 폴더 구조와 패키지명을 일치시키지 않아도 된다.
단순히 파일 상단에 패키지만 명시해주면 컴파일러가 알아서 처리하게 된다.

스코프(Scope)

: 프로젝트 구조 내에서 변수나 함수, 클래스의 공용범위를 지정해둔 단위

  • 패키지 내부
  • 클래스 내부(변수/함수)
  • 함수 내부(변수/함수)

규칙

  1. 스코프 외부에서는 스코프 내부의 멤버를 참조연산자로만 참조가 가능하다.
    a.eat()
  2. 동일 스코프 내에서는 멤버들을 공유할 수 있다.
val a = "패키지 스코프"
class B {
    fun print() {
        println(a)
    }
}
fun main() {
    println(a)
    B().print()
}

패키지 스코프
패키지 스코프

  1. 하위 스코프에서는 상위 스코프의 멤버를 재정의할 수 있다.
    하위스코프에서는 같은 이름의 멤버를 만들어 사용 가능!
val a = "패키지 스코프"
class B {
    val a = "클래스 스코프"
    fun print() {
        println(a)
    }
}
fun main() {
    val a = "함수 스코프"
    println(a)
    B().print()
}

함수 스코프
클래스 스코프

패키지 스코프

  • public - 어떤 패키지에서도 접근 가능
  • internal - 같은 모듈 내에서만 접근 가능
  • private - 같은 파일 내에서만 접근 가능
  • protected는 사용하지 않음

클래스 스코프

  • public - 클래스 외부에서 늘 접근 가능
  • private - 클래스 내부에서만 접근 가능
  • protected - 클래스 자신과 상속받은 클래스에서 접근 가능

접근 제한자: 스코프 외부에서 스코프 내부로의 접근을 제어
의도에 따라 스코프 안에 변수나 함수, 클래스를 배치할 수 있으며 접근 제한자는 이러한 스코프의 외부와 내부에서 사용할 멤버를 분리하여 스코프 외부에서 건드리지 말아야할 기능이나 값들을 안전하게 제한하는 용도를 가진다.

0개의 댓글