클래스의 가시성 변경자

클래스에서 가시성 변경자는 클래스의 메소드 혹은 필드에 대해 접근을 허용하는지 결정하는 역할.

'private, protected,default,public'키워드로 사용했던 접근 제어자와 같은 의미이다.

 

* Java의 가시성

- default : 같은 패키지에서 접근 가능

- private : 클래스 내부에서만 사용 가능하며 외부에 비공개

- protected : 클래스와 상속받은 하위 클래스에서반 사용 가능

- public : 외부에서 모두 접근 가능

 

* Kotlin의 가시성 : 코틀린은 가시성 변경자의 일부가 다른데다가 또 함수나 프로퍼티가 꼭 클래스 내부에만 존재하는 것이 아니기 때문에 의미가 추가된다

- internal
  - 클래스 멤버 : 같은 모듈에서 접근가능

  - 최상위 선언 : 같은 모듈에서 접근가능

- private

 - 클래스 멤버 : 클래스 내부에서만 사용 가능하며 외부에 비공개

 - 최상위 선언 : 같은 파일에서만 접근 가능

- protected

 - 클래스 멤버 : 클래스와 상속받은 하위 클래스에 서 사용 가능

 - 최상위 선언 : 최상위 선언에서는 사용 불가

- public

 - 클래스 멤버 : 모든 곳에서 접근 가능

 - 최상위 선언 : 모든곳에서 접근 가능

 

Java와 달리 코틀린은 같은 패키지에서 접근 가능한 'default' 속성이 따로 없다. 대신에 같은 모듈일때 접근 가능한 변경자로서 'internal'키워드가 존재한다.

'모듈'이란 한꺼번에 컴파일되어 묶이는 하나의 프로젝트 단위이다.

+ Recent posts