-
Scala Traits(트레잇)Scala 2014. 6. 6. 09:00
스칼라는 기본적으로 하나의 슈퍼클래스만 가질수 있음.
여러개를 상속하기위해서는 자바의 인터페이스처럼 트레잇을 사용하면 됨.
트레잇이 자바 인터페이스와 다른점은 메소드를 선언하는것뿐만 아니라 구현을해도 된다는점.trait Similarity { def isSimilar(x: Any): Boolean def isNotSimilar(x: Any): Boolean = !isSimilar(x) } 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 } object TraitsTest { val p1 = new Point(2, 3) //]] > p1 : Point = Point@790417ad val p2 = new Point(2, 4) //]] > p2 : Point = Point@74e60a5e val p3 = new Point(3, 3) //]] > p3 : Point = Point@2ab2dd47 println(p1.isSimilar(p1)) //]] > true println(p1.isNotSimilar(p2)) //]] > false println(p1.isNotSimilar(p3)) //]] > true println(p1.isNotSimilar(2)) //]] > true }
'Scala' 카테고리의 다른 글
Scala Pattern Matching(패턴매칭) (0) 2014.06.13 Scala Currying(커링) (0) 2014.06.11 Scala Class, Object(클래스, 오브젝트) (0) 2014.06.02 Scala 함수 (0) 2014.05.30 Scala 루프구문 (0) 2014.05.28 댓글