2014-07-28

[Scala] sealed modifier

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

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

 Scala library 중 sealed modifier를 사용하는 대표적인 예제는 OptionTry다.
 Option은 Some과 None 2개의 자식이 있고, Try는 Success와 Failure 2개의 자식을 가지고 있다.
 Option과 Try는 sealed로 선언되어 같은 파일에서 선언한 Some, None과 Success, Failure 이외에는 자식을 가지지 못하게 하고, Some, Success, Failure는 final class로 None은 상속할 수 없는 object로 선언하여 사용자가 추가로 상속받을 방법을 막아놓았다.

댓글 없음:

댓글 쓰기