티스토리 뷰

접근 제한자는 객체가 공개 되어야 하는 범위를 정해주는 역할을 한다.
이번 포스팅에서는 코틀린에서 접근 제한자를 다루는 방법에 대해서 알아보자!
1. Java와 Kotlin의 가시성 제어
2. Kotlin 파일의 접근 제한자
3. 다양한 구성요소의 접근 제한자
4. Java와 Kotlin을 함께 사용할 경우 주의할 점
Java와 Kotlin의 가시성 제어
우선 자바의 접근 제한자는 아래와 같다.
public
: 모든 곳에서 접근 가능protected
: 같은 패키지 또는 하위 클래스에서만 접근 가능default
: 같은 패키지에서만 접근 가능private
: 선언된 클래스 내에서만 접근 가능
다음은 코틀린에서의 접근 제한자이다.
public
: 모든 곳에서 접근 가능protected
: 선언된 클래스 또는 하위 클래스에서만 접근 가능internal
: 같은 모듈에서만 접근 가능private
: 선언된 클래스 내에서만 접근 가능
자바에서 protected
는 같은 패키지에서도 접근이 가능했지만, 코틀린에서 패키지는 namespace
를 관리하기 위한 용도로만 사용되기 때문에, 가시성 제어에는 사용하지 않는다. 또한, default
가 사라지고, internal
이라는 새로운 접근 제한자가 생겼다.
자바의 기본 접근 제한자는 default
지만, 코틀린의 기본 접근 제한자는 public
이다.
Kotlin 파일의 접근 제한자
코틀린은 .kt
파일에 변수, 함수, 클래스 여러개를 바로 만들 수 있다.
val a = 3
fun add(a: Int, b: Int) = a + b
class Person()
public
: 기본값, 어디서든 접근할 수 있다.protected
: 파일(최상단)에는 사용 불가능internal
: 같은 모듈에서만 접근 가능private
: 같은 파일 내에서만 접근 가능
다양한 구성요소의 접근 제한자
클래스, 생성자, 프로퍼티에 붙이는 접근 지시어도 기존과 동일하다.
public
: 모든 곳에서 접근 가능protected
: 선언된 클래스 또는 하위 클래스에서만 접근 가능internal
: 같은 모듈에서만 접근 가능private
: 선언된 클래스 내에서만 접근 가능
생성자도 가시성 범위는 동일하다.
단! 생성자에 접근 지시어를 붙이기 위해선, construtor
를 써주어야 한다.
class Bus internal constructor(
val price: Int
)
프로퍼티의 가시성 범위도 동일하다.
class Car (
internal val name: String,
_price: Int
){
var price = _price
private set
}
Java와 Kotlin을 함께 사용할 경우 주의할 점
internal
은 바이트 코드 상 public
이 되기 때문에, 자바 코드에서 코틀린 모듈의 internal
코드를 가져올 수 있다.
코틀린의 protected
와 자바의 protected
는 다르기 때문에, 자바에서 같은 패키지의 코틀린 protected
멤버에 접근할 수 있다.
'Kotlin' 카테고리의 다른 글
[Kotlin] 클래스 (0) | 2022.06.17 |
---|---|
[Kotlin] object 키워드 (0) | 2022.06.14 |
[Kotlin] 예외를 처리하는 방법 (0) | 2022.06.02 |
[Kotlin] 반복문 (0) | 2022.06.01 |
[Kotlin] null을 대하는 자세 (0) | 2022.05.28 |
- Total
- Today
- Yesterday
- leetcode
- 노마드코더
- spring boot
- 인프런
- 북클럽
- 백준
- mysql 8.0
- 정렬
- 데이터베이스
- Real MySQL
- 구현
- 파이썬
- webflux
- 코테
- MySQL
- 스프링
- 스프링부트
- Algorithm
- 노마드
- 코틀린
- 리팩토링
- kotlin
- Spring
- 문자열
- 자료구조
- 알고리즘
- 김영한
- 스프링 부트
- 릿코드
- 그리디
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |