Scala의 봉인된 특성

Mohammad Irfan 2023년6월21일
Scala의 봉인된 특성

이 튜토리얼에서는 Scala에서 예제를 실행하면서 봉인된 특성에 대해 설명합니다.

Scala의 봉인된 특성

Scala의 특성은 Java의 인터페이스와 유사하며 클래스 간에 데이터를 공유하는 데 사용됩니다. 클래스를 인스턴스화할 수 있지만 특성은 그렇지 않습니다.

Scala에서 특성은 상속을 제한하기 위해 클래스와 유사하게 봉인된 것으로 표시될 수 있습니다. 봉인된 특성과 모든 하위 유형은 모든 하위 유형이 알려지도록 동일한 파일에서 선언되어야 합니다.

특성을 정의하기 위해 다음과 같이 trait 키워드를 사용합니다.

trait Runnable

마찬가지로 봉인된 특성을 만들기 위해 다음과 같이 sealed 클래스를 사용합니다.

sealed trait Runnable

키 포인트:

  • 봉인된 특성은 동일한 파일에서만 확장할 수 있습니다.
  • 컴파일러는 가능한 모든 하위 유형을 쉽게 알고 있습니다.
  • 봉인형 특성은 가능한 아형의 수가 유한하고 미리 알고 있는 경우에만 사용하는 것을 권장합니다.

Scala에서 봉인된 특성 만들기

Scala에서 봉인된 특성을 만들어서 이해해 봅시다.

import scala.collection.mutable.ArrayBuffer

sealed trait Color {
    val name: String
}

class Black(val name: String) extends Color
class Red(val name: String) extends Color

object MyClass {
    def main(args: Array[String]) {
        val black = new Black("Black")
        val red = new Red("Red")
        val animals = ArrayBuffer.empty[Color]

        animals.append(black)
        animals.append(red)
        animals.foreach(color => println("Color Name: "+color.name))
    }
}

출력:

Color Name: Black
Color Name: Red