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
반응형
'Kotlin Language > Kotlin 기본 문법' 카테고리의 다른 글
Kotlin(코틀린) - 고차함수(Higher-order Function) (0) | 2023.12.06 |
---|---|
Kotlin(코틀린) - 널 안전성 (Null-Safety) (0) | 2023.12.05 |
Kotiln(코틀린) - 예외처리(try catch,throw) (0) | 2023.12.05 |
Kotlin(코틀린) - 람다함수 (Lambda Expression) (0) | 2023.12.03 |
Kotlin(코틀린) - 인터페이스(Interface) (0) | 2023.12.03 |
Kotlin(코틀린) - 상속(inheritance) (0) | 2023.12.01 |