Kotlin 객체에 대한 액세스 수정자(Visibility Modifiers)
다음은 서로 다른 유형의 수식자에 대한 성명의 작용 범위를 보십시오.
패키지
함수, 속성, 클래스, 대상과 인터페이스는 원본 파일의 최상위 구성 부분으로 간주할 수 있다. 즉, 가방에 직접 존재할 수 있고, 다른 플러그인이 필요하지 않다. (자바에서는 원본 파일에 클래스의 일부분으로 존재해야 한다.)
// file name: example.kt
package foo
fun baz() {}
class Bar {}
public
입니다. 즉, public
에 명시된 내용은 프로젝트의 다른 어느 곳에서든 접근할 수 있습니다.private
수식자로 수식되면private로 수식된 내용은 이 원본 파일에서만 볼 수 있습니다.internal
수식자로 수식한다면 모듈(module) 내부에서만 볼 수 있다.protected
수식자는 원본 파일의 직접적인 구성 등급 부분에서 사용할 수 없습니다.예는 다음과 같습니다.
// 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
수식부호는 클래스 내부에서만 볼 수 있음을 의미한다(즉 이 클래스의 모든 구성원에게만 볼 수 있다) protected
수식부호는 클래스 내부와 하위 클래스 내부에서 internal
수식자는 이 모듈에서 성명류를 볼 수 있는 모든 클라이언트가 internal
수식자에 수식된 구성원 public
은 성명류를 본 모든 고객이 공개 구성원을 보았다는 것을 의미한다.자바 개발자는 Kotlin에서 외부 클래스는 내부 클래스의 개인 구성원을 볼 수 없습니다.
만약
protected
의 멤버를 다시 썼고 표시된 가시적 수식자가 없다면, 다시 쓴 멤버는 기본적으로 protecte
d 수식자로 수식됩니다.다음과 같습니다.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
}
구조자(Constructors)
하나의 종류의 주 구조기에 가시적인 수식자를 지정하려면 다음과 같은 문법을 사용해야 한다(현식 성명
constructor
키워드가 필요하다).class C private constructor(a: Int) { ... }
이러니저러니 구조기는 사유다.기본적으로 모든 구조기는 public로 클래스가 보이는 곳에서 대응하는 구조기가 보이는 것을 의미한다(즉,
internal
에 의해 수식된 클래스의 구조 함수는 같은 모듈에서만 볼 수 있다).로컬 선언(Local declarations)
국부 변수, 국부 함수, 국부 클래스는 가시적 수식자에 의해 수식될 수 없습니다.
모듈(Module)
internal
수식부호로 장식된 멤버는 같은 모듈 내부에서만 볼 수 있다는 것을 의미한다.더 정확히 말하면, 하나의 모듈은 동시에 컴파일된 일련의 Kotlin 파일을 가리킨다.이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.