Hanbit the Developer
Kotlin Documentation | Visibility modifiers 본문
Category: Concepts - Classes and objects
문서 링크: https://kotlinlang.org/docs/visibility-modifiers.html
Packages
함수, 프로퍼티, 클래스, 오브젝트, 인터페이스는 패키지 내에서 top-level단에 선언될 수 있다:
// file name: example.kt
package foo
fun baz() { ... }
class Bar { ... }
- private: 해당 파일에서만 보임
- internal: 같은 모듈에서만 보임
- public
Class members
- private: 해당 클래스에서만 보임
- protected: private와 같으나 subclasses에는 공개됨
- internal: 같은 모듈 내에서 접근 가능
- public
*protected, internal member를 override하면 접근 지정자를 그대로 두어야 한다:
open class Outer {
private val a = 1
protected open val b = 2
internal open val c = 3
val d = 4 // public by default
protected class Nested {
public val e: Int = 5
}
}
class Subclass : Outer() {
// a is not visible
// b, c and d are visible
// Nested and e are visible
override val b = 5 // 'b' is protected
override val c = 7 // 'c' is internal
}
class Unrelated(o: Outer) {
// o.a, o.b are not visible
// o.c and o.d are visible (same module)
// Outer.Nested is not visible, and Nested::e is not visible either
}
*inner class, nested class에서 outer class의 프로퍼티에 언제나 접근할 수 있었다:
private class A {
private val a = 2 // protected여도 접근 가능
class B {
val b = A().a
}
inner class C {
val c = a
}
}
Constructors
class C private constructor(a: Int) { ... }
'Kotlin' 카테고리의 다른 글
Kotlin Documentation | Data classes (0) | 2023.05.23 |
---|---|
Kotlin Documentation | Extensions (0) | 2023.05.22 |
Kotlin Documentation | Functional (SAM) interfaces (0) | 2023.05.22 |
Kotlin Documentation | Interfaces (0) | 2023.05.22 |
Kotlin Documentation | Properties (0) | 2023.05.22 |