在Scala中,没有静态成员、静态方法这一说,但是object可以做到类似效果:
object University{
private var studentNo = 0
def newStudenNo = {
studentNo += 1
studentNo
}
}
object ObjecOps {
def main(args: Array[String]): Unit = {
println(University.newStudenNo) //第一次调用时,初始化成员变量
println(University.newStudenNo)
}
}
结果:1、2
class University{
val id = University.newStudenNo //可以访问伴生对象的任何成员,即使是private
private var number =0
def aClass(number:Int){this.number += number}
}
如果,同时存在一个class University,那么这个类叫做伴生类,相应地,这个对象叫做伴生对象。
这个机制很有用,伴生对象可以做一些静态化的初始化工作,如在spark中,可以经常看到这样的用法。
如果是伴生对象,这个类可以访问这个对象的任何成员(即使是private)
网友评论