240515_디모의 코틀린 강의 #13강. 변수/함수/클래스의 접근범위와 접근제한자

2024. 5. 14. 14:31TIL(Today I Learned)

유튜브 - 디모의 코틀린 문법 강의 정리

 

#13강. 변수/함수/클래스의 접근 범위와 접근제한자

 

1. 스코프: 언어 차원에서 변수, 함수, 클래스 등의 멤버들을 서로 공유할 수 있는 범위를 지정해 둔 단위

스코프, 하위 스코프의 구조

 

2. 스코프의 규칙 

 1) 스코프 외부에서는 스코프 내부의 멤버를 참조연산자로만 참조할 수 있다. ( 예시: a.eat() )

 2) 동일 스코프 내에서는 멤버를 공유할 수 있다. 

 3) 하위 스코프에서 상위 스코프의 멤버를 재정의할 수 있다. 

val a = "패키지 스코프"

class B {
	fun print(){
    	println(a)
    }
}

fun main(){
	println(a)
    B.print()
}

// "패키지 스코프" 2번 출력 ==> 변수 a는 클래스 B나 main 함수에 속해있지 않지만
// 동일 스코프 내에서 변수가 공유되었음

 

3. 접근제한자: 스코프 외부에서 내부로 접근 시, 접근 권한을 제어할 수 있는 기능

 1) 종류: public, internal, private, protected / 변수/함수/클래스 선언 시 맨 앞에 붙여 사용

 2) 사용 방법

  (1) 패키지 스코프에서의 사용

    - public(기본값): 어떤 패키지에서도 접근 가능

    - internal: 같은 모듈 내 접근 가능

    - private: 같은 파일 내 접근 가능

    - protected: 사용 불가

 

  (2) 클래스 스코프에서의 사용

    - public(기본값): 클래스 외부에서 늘 접근 가능

    - private: 클래스 내 접근 가능

    - protected: 클래스 자신 및 상속받은 클래스에서 접근 가능

    - internal: 사용 불가