ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 11강. 코틀린에서 접근 제어를 다루는 방법
    BackEnd/Kotlin 2024. 3. 7. 22:00
    반응형
    1. 자바와 코틀린의 가시성 제어
    2. 코틀린 파일의 접근 제어
    3. 다양한 구성요소의 접근 제어
    4. 자바와 코틀린을 함께 사용할 경우 주의할 점

     

    자바와 코틀린의 가시성 제어

    접근 지시어 Java Kotlin
    public 모든 곳에서 접근 가능
    protected 같은 패키지 또는 하위 클래스에서만 접근 가능 선언된 클래스 또는 하위 클래스에서만 접근 가능
    default 같은 패키지에서만 접근 가능 X
    internal X 같은 모듈에서만 접근 가능
    private 선언된 클래스 내에서만 접근 가능
    • Kotlin에서 패키지는 namespace 관리용이기 때문에 Java의 protected와 의미가 다릅니다.
    • Kotlin에서는 default가 사라지고, 모듈간의 접근을 통제하는 internal이 생겼습니다.
    • 모듈: 한 번에 컴파일 되는 Kotlin 코드 (IDEA Module, Maven Project, Gradle Source Set, Ant Task <kotlinc>의 호출로 컴파일 파일의 집합
    • Java의 기본 접근 지시어는 default
    • Kotlin의 기본 접근 지시어는 public

     

    코틀린 파일의 접근 제어

      코틀린은 .kt 파일에 변수, 함수, 클래스 여러개를 바로 만들 수 있습니다.

    public 기본값
    어디서든 접근할 수 있습니다.
    protected 파일(최상단)에는 사용 불가능
    internal 같은 모듈에서만 접근 가능
    private 같은 파일 내에서만 접근 가능

     

    다양한 구성요소의 접근 제어

      클래스, 생성자, 프로퍼티의 접근 제어는 Kotlin의 가시성 제어와 동일합니다.

    public 모든 곳에서 접근 가능
    protected 선언된 클래스 또는 하위 클래스에서만 접근 가능
    internal 같은 모듈에서만 접근 가능
    private 선언된 클래스 내에서만 접근 가능

     

      단, 생성자에 접근 지시어를 붙이려면, 다음과 같이 constructor를 붙여줘야 합니다. public constructor가 생략된 상태이기 때문입니다. 

    class Bus internal constructor(
      val price: Int
    )

     

      프로퍼티의 가시성을 제어하는 방법에는 다음과 같이 두 가지 방법이 존재합니다.

    class Car(
      internal val name: String, // 1) getter, setter 한 번에 접근 지시어를 정함
      _price: Int
    ) {
    
      var price = _price
        private set              // 2) setter에만 추가로 가시성 부여
    }

     

    자바와 코틀린을 함께 사용할 경우 주의할 점

    • Internal은 바이트 코드 상 public이 됩니다. 때문에 Java 코드에서는 Kotlin 모듈의 internal 코드를 가져올 수 있습니다.
    • Kotlin의 protected와 Java의 protected는 다릅니다. Java는 같은 패키지의 Kotlin protected 멤버에 접근할 수 있습니다.

     

     

     

    감사합니다.

    반응형

    댓글

Designed by Tistory.