本文主要是介绍scala - 类:类参数、特征(trait),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1、要使类参数成为类的字段(属性),需要在参数前加上"val"或"var"。
class Point(x: Int, val y: Int, var z: Int){var xc: Int = x;var yc: Int = y;var zc: Int = z;
} val p = new Point(1,2,3)
p.isInstanceOf[Point] // 类对象的自带默认方法
res0: Boolean = true## 1
println(p.x)
<console>:13: error: value x is not a member of Pointprintln(p.x)## 2
println(p.y)
2## 3
println(p.z)
3
2、特征
trait Equal { // 可以定义属性和方法的实现。def isEqual(x: Any): Boolean // sEqual 方法没有定义方法的实现def isNotEqual(x: Any): Boolean = !isEqual(x)
}class Point(xc: Int, yc: Int) extends Equal { //一般情况下Scala类只能够继承单一父类,Trait(特征)可以继承多个,从结果来看就是实现了多重继承var x: Int = xcvar y: Int = ycdef isEqual(obj: Any) = //子类继承特征可以实现未被实现的方法obj.isInstanceOf[Point] &&obj.asInstanceOf[Point].x == x //obj.asInstanceOf[T]的作用是将obj的类型强制转化为T
}object Test {def main(args: Array[String]) {val p1 = new Point(2, 3)val p2 = new Point(2, 4)val p3 = new Point(3, 3)println(p2);println(p2.asInstanceOf[Point]);println(p1.isEqual(p2));println(p1.isEqual(p3));println(p1.isEqual(2));}
}// 运行结果Point@e9e54c2
Point@e9e54c2
true
false
false
这篇关于scala - 类:类参数、特征(trait)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!