Kotlin : 접근 제어

정종욱·2023년 7월 5일
0

Kotlin

목록 보기
11/16
post-thumbnail

가시성 제어 차이

Java 표현JavaKotlin 표현Kotlin
public모든 곳public모든 곳
protected같은 패키지 또는 하위 클래스protected선언된 클래스 또는 하위클래스
default같은 패키지internal같은 모듈
private선언된 클래스내private선언된 클래스내
  • Kotlin에서는 패키지를 namespace 를 관리하기 위한 용도로만 사용 (영역을 나누기 위함)
  • 가시성 제어에는 미사용

코틀린 파일 접근 제어

자바의 기본 접근 지시어는 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
}
  • val 이나 var 앞에 Getter 나 Setter 한 번에 접근 지시어를 정하는 방법
  • setter 에만 추가로 가시성 부여 가능

Java & Kotlin 동시 사용 주의점

  • Internal 은 바이트 코드 상 public 이 된다.
    • 자바 코드에서는 코틀린 모듈의 internal 코드를 가져올 수 있다.
  • 코틀린과 자바의 protected 는 다르다.
    • 자바는 같은 패키지의 코틀린 protected 멤버에 접근 가능

0개의 댓글

관련 채용 정보