티스토리 뷰

scala

[Scala] sealed 제어자

sungjine 2018. 6. 23. 13:13
반응형

sealed 제어자는 class/trait에 사용할 수 있으며 같은 파일에서만 상속받을 수 있도록 강제하기 위한 제어자이다.

 

만약 다른 파일에서 상속받으려 한다면 컴파일 시 아래와 같은 에러가 발생한다.

 

Illegal inheritance from sealed trait

 

스칼라에서 사용되는 예는 Option이나 Try가 있다.

 

상속을 제어하기 위한 sealed 제어자가 있는 class/trait을 상속받은 자식은 어디서든 상속할 수 있기 때문에 보통 final 제어자와 같이 쓰거나 object로 생성한다.

 

스칼라에서 사용되는 예는 Option의 Some(final 제어자)과 None(object)이 있다.

 

trait과 class의 차이점은 여러가지가 있을 수 있지만 두 가지 차이점을 작성해본다.(trait과 class 자체에 대한 차이점이다.)

 

1. trait은 여러개를 상속받을 수 있지만 class는 하나만 상속받을 수 있다.

Class extends class with class // 에러

Class extends trait with trait // 가능

 

2. trait은 타입 바운드를 지정할 수 없지만 class는 할 수 있다.

class Class[T : String] // 가능

trait Trait[T : String] // 에러

반응형

'scala' 카테고리의 다른 글

[Scala] ensuring  (0) 2019.10.19
[Scala] 부분 적용 함수  (0) 2018.08.04
[Scala] unapply 메서드  (0) 2018.05.05
[Scala] apply 메서드  (0) 2018.03.24
[Scala] val, var, def의 차이  (0) 2018.02.28
댓글
반응형
최근에 올라온 글
Total
Today
Yesterday
글 보관함
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31