一、Scala单例对象
Scala单例对象是十分重要的,没有像在Java同样,有静态类、静态成员、静态方法,可是Scala提供了object对象,这个object对象相似于Java的静态类,它的成员、它的方法都默认是静态的。编程
//若是object的静态成员要被外界访问,则该成员不能被private修饰函数
object University{ 工具
private var studentNo = 0 this
def newStudentNo = { studentNo += 1 studentNo } spa
} scala
object objecOps { def main (args : Array[String]) : Unit = {3d
println(University.newStudentNo) println(University.newStudentNo) } code
}对象
二、Scala伴生对象
若是有一样一个类与该object名字同样,则称该object为该类的伴生对象,相对应,该类为object的伴生类。若是一个类有它的伴生对象,这个类就可经过object的名字访问到全部成员,但object不在该类的做用范围。blog
class University{ val id = University.newStudentNo private var number = 0 def aClass (number : Int){this.number += number} } object University { private var studentNo = 0 def newStudentNo = { studentNo += 1 studentNo } }
object对象为静态常量、静态变量区域,能够直接调用,共享全局变量颇有意义,伴生对象方便类的构建,可作为当前类的静态方法、成员的集合。
伴生对象首先是一个单例对象,单例对象用关键字object定义。在Scala中,单例对象分为两种,一种是并未自动关联到特定类上的单例对象,称为独立对象
(Standalone Object);另外一种是关联到一个类上的单例对象,该单例对象与该类共有相同名字,则这种单例对象称为伴生对象(Companion
Object),对应类称为伴生类。
这是一个典型的伴生类和伴生对象的例子,注意如下说明: