자바 | 코틀린 | |
---|---|---|
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
멤버에 접근할 수 있다.