Java 표현 | Java | Kotlin 표현 | Kotlin |
---|---|---|---|
public | 모든 곳 | public | 모든 곳 |
protected | 같은 패키지 또는 하위 클래스 | protected | 선언된 클래스 또는 하위클래스 |
default | 같은 패키지 | internal | 같은 모듈 |
private | 선언된 클래스내 | private | 선언된 클래스내 |
자바의 기본 접근 지시어는 default
, 코틀린은 public
이다.
// Test.kt
package com.jong9.test
val a = 3
data class Test()
fun add()
코틀린은 위와 같이 .kt
파일에 변수, 함수, 클래스 여러개를 바로 만들 수 있다.
표현 | 접근 가능 범위 |
---|---|
public | 어디서나 |
protected | 파일(최상단)에는 사용 불가 |
internal | 같은 모듈 |
private | 같은 파일 내 |
class Cat private constructor()
생성자에 접근 지시어를 붙이려면 constructor 을 사용하여야 함
// Test.kt
package com.jong9.test
fun isDirectoryPath(path: String): Boolean {
return path.endsWith("/")
}
위 .kt
파일에 클래스 명을 지정하지 않았지만 TestKt.isDirectoryPath()
라고 자동으로 표현된다.
가시성 범위는 동일하나 제어 방법은 약간 다르다.
class Car(
internal val name: String, // 한 번에 접근 지시어를 정함
private var owner: String,
_private: Int // 생성자 파라미터
) {
var price = _price
private set
}
Internal
은 바이트 코드 상 public
이 된다.internal
코드를 가져올 수 있다.protected
는 다르다.protected
멤버에 접근 가능