trait Equal {
def isEqual(x: Any): Boolean
def isNotEqual(x: Any): Boolean = !isEqual(x)
}
trait ToString {
def toString(): String
}
class Point(xc: Int, yc: Int) extends Equal with ToString {
var x: Int = xc
var y: Int = yc
def isEqual(obj: Any) =
obj.isInstanceOf[Point] &&
obj.asInstanceOf[Point].x == x
override def toString(): String =
"x=" + x + ",y=" + y
}
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(p1.isEqual(p2))
println(p1.isEqual(p3))
println(p1.isEqual(2))
println(p1.toString)
}
}
Scala类 | Scala特质 |
---|
可以有类参数,如:class Pint(x: Int, y: Int) | 不能有任何类参数,如:trait NoPint(x: Int, y: Int) // 不能编译 |
super调用是静态绑定的 | super调用是动态绑定的 |