Post

Kotlin 접근제한자

Kotlin 접근제한자

Kotlin의 접근제한자

접근제한자란 무엇인가요?

접근제한자는 코틀린에서 변수나 메소드를 객체를 통해 호출할 수 있는지 여부를 제한하는 것을 의미합니다. 이는 데이터에 무분별한 접근을 막아 프로그램의 유지보수를 용이하게 하는 데 사용됩니다.

Kotlin의 접근제한자 종류

Kotlin에서는 public, private, internal, protected 네 가지 접근제한자를 제공합니다.

  • public: 명시하지 않으면 기본적으로 public이며, 어디서나 접근할 수 있습니다.
  • private: 동일한 클래스 내부에서만 접근할 수 있습니다.
  • internal: 같은 모듈 내부에서만 접근할 수 있습니다.
  • protected: 기본적으로 private이지만, 상속을 받은 경우에는 타 모듈에서도 접근할 수 있습니다.

접근제한자 사용 예시

아래 예시 코드는 AccessTestClass 내에서 각 접근제한자가 어떻게 작동하는지 보여줍니다.

  • b 변수와 publicTest 함수는 접근제한자가 명시되지 않았으므로 기본적으로 public 입니다.
  • a 변수와 publicTest2 함수는 public으로 명시되어 외부에서 접근 가능합니다.
  • c 변수와 privateTest 함수는 private으로 선언되어 동일한 클래스 내부에서만 접근할 수 있습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// AccessTestClass.kt
class AccessTestClass {
    var b = 2 // public (기본값)
    public var a:Int = 1 // public
    private var c = 3 // private

    fun publicTest() { // public (기본값)
        println("public 입니다")
    }
    public fun publicTest2() { // public
        println("public 입니다")
    }
    private fun privateTest() { // private
        println("private 입니다")
    }
}

fun main() {
    var accessTestClass = AccessTestClass()
    
    // accessTestClass.a  // 접근 가능
    // accessTestClass.b  // 접근 가능
    // accessTestClass.c  // 컴파일 에러: private이므로 외부에서 접근 불가
    
    // accessTestClass.publicTest() // 접근 가능
    // accessTest_class.publicTest2() // 접근 가능
    // accessTestClass.privateTest() // 컴파일 에러: private이므로 외부에서 접근 불가
}

main 함수 예시에서 .(점) 연산자를 통해 accessTestClass 객체의 멤버에 접근을 시도할 때, public 또는 internal로 선언된 멤버만 외부에서 접근할 수 있음을 확인할 수 있습니다.

This post is licensed under CC BY 4.0 by the author.