반응형
접근제어를 다루는 방법
자바와 코틀린의 가시성 제어
- 자바의 접근 제어
public
: 모든 곳에서 접근 가능protected
: 같은 패키지 또는 하위 클래스에서만 접근 가능default
: 같은 패키지에서만 접근 가능private
: 선언된 클래스 내에서만 접근 가능
- 코틀린의 접근 제어
public
: 모든 곳에서 접근 가능protected
: 선언된 클래스 또는 하위 클래스에서만 접근 가능internal
: 같은 모듈에서만 접근 가능private
: 선언된 클래스 내에서만 접근 가능
- 코틀린에서는 패키지를 namespace를 관리하기 위한 용도로만 사용한다. 가시성 제어에는 사용되지 않는다.
모듈
: 한 번에 컴파일 되는 kotlin 코드- 자바의 기본 접근 지시어는
default
이지만, 코틀린은public
이다. - 코틀린은
.kt
파일에 변수, 함수, 클래스 여러개를 바로 만들 수 있다.
코틀린 파일의 접근 제어
public
: 기본값, 어디든 접근 가능protected
: 파일(최상단)에는사용 불가
internal
: 같은 모듈에서만 접근 가능private
: 같은 파일 내에서만 접근 가능
다양한 구성요소의 접근 제어
- 클래스
public
: 모든 곳에서 접근 가능protected
: 선언된 클래스 또는 하위 클래스에서만 접근 가능internal
: 같은 모듈에서만 접근 가능private
: 선언된 클래스 내에서만 접근 가능
- 생성자
- 동일하나,
constructor
을 명시적으로 사용해야 한다. - Java에서 유틸성 코드를 만들 때
abstract class + private Contructor
을 사용해서 인스턴스화를 막았다. - 코틀린에서도 비슷하지만 팡리 최상단에 바로 유틸함수를 만들면 편리하다.
- 동일하나,
- 프로퍼티
class Car(
internal var name: String,
private var owner: String,
_price: Int
) {
var price = _price
private set
}
val
또는var
앞에internal
을 사용해 getter, setter 한번에 접근 지시어를 정하거나.- setter에만 가시성을 부여할 수 있다.
Java와 Kotlin을 함께 사용할 경우 주의할 점
- Internal은 바이트 코드 상 public이 된다.
- 때문에 Java 코드에서는 Kotlin 모듈의 internal 코드를 가져올 수 있다.
- Kotlin의 protected와 Java의 protected는 다르다.
- Java는 같은 패키지의 Kotlin protected 멤버에 접근할 수 있다.
반응형
'Java & Kotlin > Kotlin' 카테고리의 다른 글
[Kotlin] Data, Enum, Sealed 클래스 (0) | 2022.07.06 |
---|---|
[Kotlin] 중첩 클래스를 다루는 방법 (0) | 2022.07.06 |
[Kotlin] object를 다루는 방법 (0) | 2022.07.06 |
[Kotlin] 상속을 다루는 방법 (0) | 2022.07.06 |
[Kotlin] 클래스를 다루는 방법 (0) | 2022.07.06 |
[Kotlin] 함수를 다루는 방법 (0) | 2022.07.06 |