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.