본문 바로가기

Development/Programming

[Scala] Traits

스칼라에서는 JAVA에서 interface와 비슷한 Traits가 있다.


하지만 구현이 가능한 것이 약간 다르다.


  1. trait Similarity {
  2. def isSimilar(x: Any): Boolean
  3. def isNotSimilar(x: Any): Boolean = !isSimilar(x)
  4. }


이렇게 trait을 선언하고 아래와 같이 사용해 보자


  1. class Point(xc: Int, yc: Int) extends Similarity {
  2. var x: Int = xc
  3. var y: Int = yc
  4. def isSimilar(obj: Any) =
  5. obj.isInstanceOf[Point] &&
  6. obj.asInstanceOf[Point].x == x&&
  7. obj.asInstanceOf[Point].y == y
  8. }
  9. object TraitsTest extends Application {
  10. val p1 = new Point(2, 3)
  11. val p2 = new Point(2, 4)
  12. val p3 = new Point(3, 3)
  13. println(p1.isNotSimilar(p2))
  14. println(p1.isNotSimilar(p3))
  15. println(p1.isNotSimilar(2))
  16. }



결과는 아래와 같다.


true

true

true



'Development > Programming' 카테고리의 다른 글

[Scala] Lower Type Bounds  (0) 2015.03.12
[Scala] Upper Type Bounds  (0) 2015.03.11
[Scala] Polymorphic Methods  (0) 2015.03.05
[Scala] Pattern Matching  (0) 2015.03.02
[Scala] Higher-order Functions  (0) 2015.02.18