在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)
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/28912557/viewspace-1839506/
,如需转载,请注明出处,否则将追究法律责任。