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 Point
println(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 = xc
var y: Int = yc
def 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