자바와 코틀린의 가시성 제어
| java/kotlin |
Java |
Kotlin |
| public |
모든 곳에서 접근 가능 |
모든 곳에서 접근 가능 |
| protected |
같은 패키지 또는 하위 클래스에서만 접근 가능 |
선언된 클래스 또는 하위 클래스에서만 접근 가능 |
| default |
default : 같은 패키지에서만 접근 가능 |
internal : 같은 모듈에서만 접근 가능 |
| private |
선언된 클래스 내에서만 접근 가능 |
선언된 클래스 내에서만 접근 가능 |
- 코틀린에서는 패키지를 namespace를 관리하기 위한 용도로만 사용, 가시성 제어로는 사용되지 않음
- 모듈 : 한 번에 컴파일 되는 코틀린 코드
- IDEA Module / Maven Project / Grade Source Set / Ant Task <kotlinc> 호출로 컴파일 파일의 집합
- Java의 기본 접근 지시어는 default
- Kotlin의 기본 접근 지시어는 public
코틀린 파일 안에서의 접근 제어
| public |
기본 값, 어디서든 접근할 수 있다. |
| protected |
파일(최상단)에는 사용 불가능 |
| internal |
같은 모듈에서만 접근가능 |
| private |
같은 파일 내에서만 접근 가능 |
- 코틀린은 한 파일 내에 여러 개의 함수 변수 클래스를 만들 수 있음
- main 함수 클래스 내 가 아니더라도 변수 함수 생성이 가능함
- 이 때의 접근 제어
.kt 파일
package ....
val a = 3
fun add(a: Int, b: Int): Int {
return a + b
}
class Cat()
다양한 구성요소의 접근 제어
생성자
class Bus internal constructor(
val price: Int
}
- 생성자도 가시성 범위는 같음
- 생성자에 접근 지시어를 붙이려면 constructor를 써주어야 함
유틸성 코드