본문 바로가기
Kotlin Language/Kotlin 기본 문법

Kotlin(코틀린) - 접근제한자

by Classic Master 2023. 12. 5.
728x90

접근 제한자(Visibility Modifier)?

객체가 공개되어야 하는 범위를 정하는 역할을 하고 있습니다. 

 

접근 제한자 종류?

코틀린에서는 private, protected, internal, public의 접근 제한자를 사용하고 있으며, 변수, 클래스 멤버 등의 참조

종류 설명
public 코틀린의 기본 접근 제한자로써, 어디에서나 접근할 수 있습니다.
private 해당 파일(.kt) 또는 클래스 내에서만 접근 가능합니다.
protected 상속받는 인터페이스, 클래스 또는 자식 클래스에서 만 접근이 가능합니다.
internal 같은 모듈 내에서 어디서든 접근 가능하다.

모듈이란?

  • 모듈은 일반적으로 관련된 코드 및 리소스를 그룹화한 단위를 나타냅니다. 모듈은 프로젝트 내에서 독립적으로 컴파일되고 패키지되는 단위이며, 다른 모듈과 상호 작용할 수 있습니다. 코틀린은 주로 IntelliJ IDEA나 Android Studio와 같은 통합 개발 환경에서 사용되며, 이러한 IDE에서는 프로젝트를 여러 모듈로 구성할 수 있습니다.

코틀린 모듈

생성자의 접근제한자

  • 생성자에서 접근 제한자를 붙이지 않으면 모든 생성자는 공개(public)으로 선언되므로 어디에서는 클래스에 접근를 할 수 있다. private을 붙이면 클래스 내에서만 접근이 가능하여 외부에서 생성할 수 없게 된다. internal이 붙게 되면 모듈 내에서만 접근 가능하다.
  • 주의: 생성자에 접근 제한자를 선언하려면 키워드(constructor)를 명시적으로 붙여야 한다.
class C private constructor(a: Int) { ... }

 


public

package com.example

class PublicExample {
  
    public fun publicFunction() {
        println("어디에서나 접근가능.")
    }
}

 

Private

package com.example

class PrivateExample {
    private val privateVariable = "This is a private variable"
    
    private fun privateFunction() {
        println("해당 파일이나 클래스에서만 사용을 가능가능")
    }
}

 

internal

package com.example

internal class InternalExample {
    internal val internalVariable = "This is an internal variable"
    
    internal fun internalFunction() {
        println("코틀린에서 새롭게 추가된 접근 제한자이며,같은 모듈 안 에서는 다 접근이 가능")
    }
}

 

protected 

package com.example

open class BaseClass {
    protected val protectedVariable = "This is a protected variable"
    
    protected fun protectedFunction() {
        println("상속")
    }
}

class Subclass : BaseClass() {
    // Inherited protected members can be accessed in subclasses
    fun accessProtectedMember() {
        println("상속받는 인터페이스, 클래스 또는 자식 클래스에서 만 접근이 가능: $protectedVariable")
        protectedFunction()
    }
}
728x90
반응형