더북(TheBook)

4.1.3 멤버 가시성

가시성은 클래스 멤버마다 다르게 지정할 수 있다. 즉, 각각 어떤 영역에서 쓰일 수 있는지 결정할 수 있다. 가시성을 사용해 구현과 관련한 세부 사항을 캡슐화함으로써 외부 코드로부터 구현 세부 사항을 격리시킬 수 있으므로, 가시성 지정은 클래스 정의 시 아주 중요한 부분이다. 코틀린에서는 클래스 멤버의 가시성을 다음과 같은 변경자 키워드로 지정할 수 있다.

public(공개): 멤버를 어디서나 볼 수 있다. 디폴트 가시성이 바로 public이다. 따라서 명시적으로 public을 표기할 필요가 없다.

internal(모듈 내부): 멤버를 멤버가 속한 클래스가 포함된 컴파일 모듈 내부에서만 볼 수 있다.

protected(보호): 멤버를 멤버가 속한 클래스와 멤버가 속한 클래스의 모든 하위 클래스 안에서 볼 수 있다. 이에 대해서는 8장 클래스 계층 이해하기에서 상속을 다룰 때 자세히 설명한다.

private(비공개): 멤버를 멤버가 속한 클래스 내부에서만 볼 수 있다.

각 변경자의 뜻은 최상위 함수나 프로퍼티에서 살펴본 내용과 비슷하다.

자바 vs. 코틀린 자바의 기본 가시성은 패키지 전용(package parivate)으로, 어떤 멤버를 이 멤버가 속한 클래스가 들어있는 패키지 내부 어디서나 볼 수 있다. 자바에서 클래스 멤버를 공개 멤버로 정의하고 싶으면 명시적으로 public 변경자를 붙여야 한다. 반대로 코틀린에서는 클래스 멤버(실제로는 지역 선언이 아닌 모든 선언)의 디폴트 가시성이 공개 가시성이다. 또한, 코틀린에는 자바의 패키지 전용에 해당하는 가시성이 없다는 점에 유의하라.1

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.