本文主要是介绍scala——traits,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Traits, 类似于java中的接口,是用来定义object的方法。类似JAVA 8,在scala中,traits中的方法不是必须全部实现,可以为某个方法定义好默认的方法体,如:
trait Similarity {def isSimilar(x: Any): Booleandef 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 = xcvar y: Int = ycdef 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))
}
输出为:
false
true
true
这篇关于scala——traits的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!