English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
이 문서에서, 여러분은 Kotlin에서4가지고, 그리고 그들이 다른 상황에서 어떻게 작동하는지.
可见성 지시자는 클래스, 객체, 인터페이스, 생성자, 함수, 속성 및 설정자의可见성(접근성)을 설정하는 데 사용되는 키워드입니다。(getters의 visible성 지시자를 설정할 수 없습니다. 왜냐하면 그들은 항상 속성과 같은 visible성을 가지기 때문입니다.)
제목Kotlin 클래스와 객체문장에서, 여러분은 public과 private可见성 지시자를 간단히 이해했습니다. 이 문서에서는 다른 두 개의可见성 지시자인 protected와 internal(또한 public과 private)를 자세히 알아보겠습니다.
패키지는 관련된 함수, 속성, 클래스, 객체 및 인터페이스를 조직합니다.
수식자 | 설명 |
---|---|
public | 어디서든 보입니다 |
private | 선언이 포함된 파일 내에서 보입니다 |
internal | 같은 모듈 내에서 보입니다(함께 컴파일되는 Kotlin 파일 집합) |
protected | 패키지에 사용할 수 없습니다(자식 클래스에 사용) |
주의:visible 수식자가 지정되지 않으면 기본적으로 public 값으로 설정됩니다.
예를 들어 보겠습니다:
//파일 이름: hello.kt package test fun function1() {} //기본적으로 공개적이며 어디서든 보입니다 private fun function2() {} //hello.kt 내에서 보입니다 internal fun function3() {} //같은 모듈 내에서 보입니다 var name = "Foo" //어디서든 볼 수 있습니다 get() = field //hello.kt 내에서 보입니다(그 속성과 같습니다) private set(value) { //hello.kt 내에서 보입니다 field = value } private class class1 {} //hello.kt 내에서 보입니다
아래는 visible 수식자가 클래스 내에서 멤버(기능, 속성)에 작동하는 방식입니다:
수식자 | 설명 |
---|---|
public | 클래스의 선언을 볼 수 있는 모든 클라이언트에 대한 접근 가능 |
private | 클래스 내에서만 보입니다 |
protected | 클래스 및 자식 클래스 내에서 보입니다 |
internal | 모듈 내에서는 클래스의 선언을 볼 수 있는 모든 클라이언트에 대한 접근 가능 |
주의:protected 멤버를 파생 클래스에서 재정의했을 때 그可见성을 지정하지 않으면 그 visible성도 protected입니다.
예를 들어 보겠습니다:
open class Base() { var a = 1 //기본적으로 공개됩니다 private var b = 2 // Base 클래스는 private입니다 protected open val c = 3 //Base 클래스와 Derived 클래스에 대한 접근 가능 internal val d = 4 //같은 모듈 내에서 보입니다 protected fun e() { } //Base 클래스와 Derived 클래스에 대한 접근 가능 } class Derived: Base() { // a, c, d, 및 e()Base 클래스의 모든 속성은 보입니다 // b는 숨겨져 있습니다 override val c = 9 // c는 protected입니다 } fun main(args: Array<String>) { val base = Base() //base.a와 base.d는 보입니다 // base.b, base.c 및 base.e()은 숨겨져 있습니다 val derived = Derived() // derived.c은 보이지 않습니다. }
기본적으로 생성자의 접근성은 public입니다. 그러나 변경할 수 있습니다. 이를 위해 constructor 키워드를 명시적으로 추가해야 합니다.
아래의 예제에서 생성자는 기본적으로 public입니다:
class Test(val a: Int) { // code }
그의 접근성을 변경할 수 있습니다. 다음과 같은 방법으로 변경할 수 있습니다.
class Test private constructor(val a: Int) { // code }
이 곳의 생성자는 private입니다.
주의: Kotlin에서는, 지역 함수, 변수 및 클래스에 접근성修飾자를 가질 수 없습니다.