| 자바 | 코틀린 | |
|---|---|---|
| public | 모든 곳에서 접근 가능 | 모든 곳에서 접근 가능 |
| protected | 같은 패키지 또는 하위 클래스에서만 접근 가능 | 선언된 클래스 또는 하위 클래스에서만 접근 가능 |
| default | 같은 패키지에서만 접근 가능 | X |
| private | 선언된 클래스 내에서만 접근 가능 | 선언된 클래스 내에서만 접근 가능 |
| internal | X | 같은 모듈에서만 접근 가능 |
default, 코틀린은 public이다.public - 기본값, 어디서든 접근 가능protected - 사용 불가internal - 같은 모듈에서만 접근 가능private - 같은 파일에서만 접근 가능constructor 키워드가 필요하다.class Cat protected constructor (
// ...
)
abstract class + private constructor를 사용해 인스턴스화를 막았지만static 메서드를 만들게 된다.getter, setter에 가시성을 따로 부여할 수도 있다.class Car(
internal val name: String, // 한 번에 접근 제어
_price: Int
) {
var price = _price // getter는 public, setter는 private으로 하고 싶을 때
private set
}
internal은 바이트 코드 상 public이 된다.
internal 코드를 가져올 수 없다.protected와 자바의 protected는 다르다.
protected 멤버에 접근할 수 있다.