[Scala] sealed modifier

Scala에는 sealed라는 독특한 modifier가 있다.

위와 같은 방식으로 사용하는데, sealed라는 modifier를 붙인 class는 선언된 파일 안에서만 상속받을 수 있다. 선언된 파일이 아닌 다른 파일에서는 사용할 수는 있지만 상속받으려고 한다면 컴파일 에러가 발생한다. 다만, sealed의 자식은 sealed가 아니어서 주로 final modifier와 함께 쓰인다.

Scala library 중 sealed modifier를 사용하는 대표적인 예제는 OptionTry다.

OptionSomeNone 2개의 자식이 있고, TrySuccessFailure 2개의 자식을 가지고 있다.

OptionTrysealed로 선언되어 같은 파일에서 선언한 Some, NoneSuccess, Failure 이외에는 자식을 가지지 못하게 하고, Some, Success, Failurefinal classNone은 상속할 수 없는 object로 선언하여 사용자가 추가로 상속받을 방법을 막아놓았다.

댓글

이 블로그의 인기 게시물

[C++] enum class - 안전하고 쓰기 쉬운 enum

Log Aggregator 비교 - Scribe, Flume, Fluentd, logstash

RAII는 무엇인가

[Python] cache 데코레이터로 최적화하기

[Web] SpeechSynthesis - TTS API