본문
170823(수) - Kotlin docs (Visibility Modifiers)
Kotlin docs
Visibility Modifiers
- private, protected, internal, public
- can have : Classes, objects, interfaces, constructors, functions, properties, setter
- getter는 해당 property의 visibility를 따라간다.
Packages
- functions, properties, classes, objects, interfaces 는 package 내부에서 직접 선언이 가능하다 (top-level)
// file name: example.kt package foo fun baz() {} class Bar {}
ㆍpublic (default) : everywhere visible
ㆍprivate : 선언이 포함된 file 내부에서만 visible
ㆍinternal : everywhere visible in same module
ㆍprotected : not available top-level
// file name: example.kt package foo private fun foo() {} // visible inside example.kt public var bar: Int = 5 // property is visible everywhere private set // setter is visible only in example.kt internal val baz = 6 // visible inside the same module
Classes and Interfaces
- private : class 내부에서만 visible
- protected : same as private + subclasses visible
- internal : declaring class를 보는 module안에 있는 client는 internal members를 본다.
- public : declaring class를 보는 client는 public members를 본다.
open class Outer { private val a = 1 protected open val b = 2 internal 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 } 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 }
ㆍConstructor
- primary constructor의 visibility는 explicit 하게 constructor keyword를 추가해야 한다.
class C private constructor(a: Int) { ... }
- 기본적으로 constructor는 public
- internal class의 constructor는 동일한 module 내에서만 볼 수 있다.
ㆍLocal declarations
- local variables, functions, classes는 visibility modifiers를 가질 수 없다.
Modules
- internal visibility modifier는 member가 동일한 module 내에서 볼 수 있다는 것을 의미
- Module : 함께 complie된 Kotlin file set
ㆍIntelliJ IDEA module
ㆍMaven project
ㆍGradle source set
ㆍAnt task를 한번 invoke하여 compile된 file set
'Mobile > Kotlin' 카테고리의 다른 글
171102(목) - Kotlin docs (Data Classes) (0) | 2017.11.03 |
---|---|
170828(월) - Kotlin docs (Extensions) (0) | 2017.08.28 |
170821(월) - Kotlin docs (Interfaces) (0) | 2017.08.21 |
170821(월) - Kotlin docs (Properties and Fields) (0) | 2017.08.21 |
170818(금) - Kotlin docs (Classes and Inheritance) (0) | 2017.08.18 |
댓글