Scala单例对象和伴生对象
1、Scala单例对象
Scala单例对象是十分重要的,没有像在Java一样,有静态类、静态成员、静态方法,但是Scala提供了object对象,这个object对象类似于Java的静态类,它的成员、它的方法都默认是静态的。
如果object的静态成员要被外界访问,则该成员不能被private修饰
2、Scala伴生对象
如果有同样一个类与该object名字一样,则称该object为该类的伴生对象,相对应,该类为object的伴生类。
如果一个类有它的伴生对象,这个类就可通过object的名字访问到所有成员,但object不在该类的作用范围。
经典伴生对象和伴生类实现demo
/** * Created by root * Description : 伴生对象和伴生类 * * 伴生类ObjectAndClassTest的构造函数定义为private,虽然这不是必须的,却可以有效防止外部实例化ObjectAndClassTest类,使得ObjectAndClassTest类只能供对应伴生对象使用; * 每个类都可以有伴生对象,伴生类与伴生对象写在同一个文件中; * 在伴生类中,可以访问伴生对象的private字段ObjectAndClassTest.specialty * 而在伴生对象中,也可以访问伴生类的private方法:objectAndClassTest.getSpecialtyName() * 最后,在外部不用实例化,直接通过伴生对象访问方法:ObjectAndClassTest.printSpectalty() * */ class ObjectAndClassTest private(val name:String) { private def getSpecialtyName() = "name = " + name + ";specialty = " + ObjectAndClassTest.specialty } object ObjectAndClassTest{ private val specialty = "software development" private val objectAndClassTest = new ObjectAndClassTest("xiaoming") def printSpectalty() = println(objectAndClassTest.getSpecialtyName()) } object Test{ def main(args: Array[String]): Unit = { ObjectAndClassTest.printSpectalty() } }