Prologue

기본적으로 자바와 비슷하지만, 다른 점이 있어 코틀린의 접근 제한자에 대해서 알아보자.

Subject

  • 접근 제한자란 변수나 함수를 공개하는 데 사용하는 키워드라고 생각하면 된다.
  • public : 전체 공개이며, 기본적으로 public이다.
  • private : 현재 파일 내부에서만 사용할 수 있다.
  • protected : 자바의 protected와 다르며, 해당 멤버는 오직 어떤 클래스나 그 클래스를 상속한 클래스에서 접근할 수 있다.
  • internal : 같은 모듈 내에서만 사용할 수 있다.

안드로이드에서는 app 모듈을 기본으로 제공하여 앱을 만들 수 있다. 보통 기본 app 모듈만 사용하지만, 여러 모듈을 생성할 수 있다. 멀티 모듈로 개발하는 경우에는 internal을 사용하여 모듈 간 접근을 제한하도록 할 수 있다.

모듈 : 한꺼번에 컴파일되는 코틀린 파일들을 의미한다.

open

자바에서는 클래스에 final이 붙지 않으면 모두 다른 클래스에서 상속이 가능하다. 하지만, 코틀린에서의 클래스와 메소드는 기본적으로 final이기 때문에 클래스의 상속을 허용하기 위해서는 클래스 앞에 open 키워드를 붙여야 한다. 더불어 오버라이드를 허용하고 싶은 메소드나 프로퍼티의 앞에도 open 변경자를 붙여야 한다.

Ref