scala——traits

来源:互联网 发布:大恒加密软件破解 编辑:程序博客网 时间:2024/05/17 02:16

Traits, 类似于java中的接口,是用来定义object的方法。类似JAVA 8,在scala中,traits中的方法不是必须全部实现,可以为某个方法定义好默认的方法体,如:

trait Similarity {  def isSimilar(x: Any): Boolean  def isNotSimilar(x: Any): Boolean = !isSimilar(x)}

以上的trait定义了2个方法,isSimilar(),isNotSimilar(); 其中,isSimilar()类似JAVA中的抽象方法,并没有提供实现,而isNotSimilar()方法提供了默认的实现,由此,若class实现此trait时,只需要提供isSimilar()的实现即可。scala中,通过多继承来结合traits和class。

如:

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 extends App {  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))}
输出为:
falsetruetrue

0 0