코틀린에서는 멤버(프로퍼티, 메서드 등)에 대한 가시성을 제어하기 위해 다양한 가시성 수준(Visibility Modifiers)을 제공합니다. 이러한 가시성 수준을 사용하여 클래스 외부에서 접근할 수 있는 범위를 제한할 수 있습니다.
가시성 수준에는 다음과 같은 네 가지가 있습니다.
1. public (기본 가시성)
- 기본적으로 모든 선언(클래스, 인터페이스, 함수, 프로퍼티 등)은 public 가시성을 가집니다.
- public 멤버는 어디서나 접근할 수 있습니다.
class Example {
val publicProperty: Int = 42
fun publicMethod() {
println("This is a public method")
}
}
2. internal
- internal 가시성은 같은 모듈 내에서만 접근할 수 있습니다.
- 모듈은 일반적으로 컴파일 시 생성되는 단위이며, 일반적으로 프로젝트를 말합니다.
internal class InternalClass {
internal val internalProperty: Int = 42
internal fun internalMethod() {
println("This is an internal method")
}
}
3. protected
protected 가시성은 같은 클래스 내부와 그 클래스를 상속받은 클래스 내에서만 접근할 수 있습니다.
open class Parent {
protected val protectedProperty: Int = 42
}
class Child : Parent() {
fun accessProtectedProperty() {
println("Protected property value: $protectedProperty")
}
}
4. private
- private 가시성은 같은 클래스 내부에서만 접근할 수 있습니다.
- 최상위 수준(패키지 내)에서는 private 멤버를 사용할 수 없습니다.
class PrivateExample {
private val privateProperty: Int = 42
private fun privateMethod() {
println("This is a private method")
}
}
주의사항
- 가시성 수준을 지정하지 않을 경우, 기본적으로 public 가시성을 갖게 됩니다.
- 클래스의 가시성 수준은 해당 파일의 가시성 수준과 같아야 합니다.
- protected 멤버는 최상위 수준에서는 사용할 수 없습니다.
가시성을 적절히 활용하여 모듈화하고 코드의 접근성을 관리함으로써 코드의 유지보수성과 안전성을 높일 수 있습니다.
With ChatGPT
'Kotlin > 포스팅' 카테고리의 다른 글
코틀린 지역 클래스 (0) | 2023.12.30 |
---|---|
코틀린 내포된 클래스 (0) | 2023.12.30 |
코틀린 생성자 (0) | 2023.12.25 |
코틀린 클래스 내부 구조 (0) | 2023.12.25 |
코틀린 클래스 정의 (0) | 2023.12.25 |