스칼라에서는 JAVA에서 interface와 비슷한 Traits가 있다.
하지만 구현이 가능한 것이 약간 다르다.
trait Similarity {
def isSimilar(x: Any): Boolean
def isNotSimilar(x: Any): Boolean = !isSimilar(x)
}
이렇게 trait을 선언하고 아래와 같이 사용해 보자
class Point(xc: Int, yc: Int) extends Similarity {
var x: Int = xc
var y: Int = yc
def isSimilar(obj: Any) =
obj.isInstanceOf[Point] &&
obj.asInstanceOf[Point].x == x
&&obj.asInstanceOf[Point].y == y
}
object TraitsTest extends Application {
val p1 = new Point(2, 3)
val p2 = new Point(2, 4)
val p3 = new Point(3, 3)
println(p1.isNotSimilar(p2))
println(p1.isNotSimilar(p3))
println(p1.isNotSimilar(2))
}
결과는 아래와 같다.
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 |