505
13
가시성 규칙
13.2
가시성 지정 키워드
자바나
C
#과 마찬가지로
private
protected
가시성을 변경하는 키워드는 선언의 맨 앞
에 와야 한다. 어떤 타입의
class
trait
키워드 앞, 필드의
var
val
앞, 그리고 메서드의
def
앞에서 가시성 지정 키워드를 있다.
NOTE
_
접근 변경자 키워드를 클래스의 주 생성자에 대해 사용할 수도 있다. 타입 이름과 타입 매개변수
이, 또는
class
Restricted
[+
A
]
private
(
name
:
String
) {...}에서와 같이 인자 목록 앞에 그런 키
워드를 넣으면 된다.
왜 이런 지정이 필요할까? 그렇게 하면 타입을 직접 인스턴스화하지 않고, 팩터리 메서드를 사용해서 인스턴
스를 생성하게 강제할 있다.
[표
13
-
1
]은 가시성 영역을 정리한 것이다.
13-1
가시성영역
이름 키워드 설명
공개 없음
공개멤버와타입은어디에서나모든경계를넘어서볼수있다.
보호
protected
보호멤버들은그멤버를정의한타입과파생타입,그리고내포된타입에
서만볼수있다.보호된타입은오직같은패키지나하위패키지에서만볼
수있다.
비공개
private
비공개멤버들은오직그멤버를정의한타입과내포된타입에서만볼수
있다.비공개타입은동일한패키지안에서만볼수있다.
영역지정보호
protected
[
영역
]
가시성을영역으로제한한다.패키지,타입,
this
(멤버의경우같은인스
턴스,타입의경우둘러싼패키지를의미)를영역으로지정할수있다.
번장의설명을보라.
영역지정비공개
private
[
영역
]
영역지정보호와비슷하다.다만상속시동작이달라진다(이번장에서
설명할것임).
가시성에 대해 자세히 살펴보자. 단순화를 위해 멤버로는 필드만 사용할 것이다. 메서
드나 타입 정의도 같은 방식으로 작동한다.
NOTE
_
불행히도 이런 가시성 변경자를 패키지에는 적용할 수 없다. 따라서 패키지는 항상 공개 상태다. 심
지어 외부에 공개한 타입이 아무 것도 없는 경우에도 그렇다.

Get 프로그래밍 스칼라: 실용적인 스칼라 활용법을 익히는 가장 확실한 실전 바이블 (2.11.x 버전 기반) now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.