今天跟大家分享的是scala的Object修饰的对象,做过java开发的同学都知道使用static修饰的类、方法、字段等,都可以通过class.method等方式调用。而scala中的Object对象就可以达到同样的效果。
使用场景:
1:作为存放工具函数和常量的地方
2:高效地共享单个不可变实例
3:需要用单个实例来协调某个服务
Object对象有如下特点:
1:对象中的构造方法不能带参数
2:对象中的方法和属性被调用时,构造方法被执行(仅执行一次),后面再被调用构造方法不会被执行
3:与类名相同的对象为伴生对象,伴生对象与伴生类需要在同一个源文件中。
4:伴生对象与伴生类可以相互访问私有的属性或方法
5:Object(x,x,x)这种格式的Object调用,调用的是伴生对象里的apply方法,通过这种方式来创建类实例,通过这种式可以设计单例模式
6:Object对象和类相似,可以扩展类和物质,唯一不同就是构造方法不能带参数
/**
* Created by binary on 2016/11/2.
*/
class Account2 private (val id : Int,init : Double) {
private var balance = init
val number = Account2.newUniqueNumber
}
object Account2{
def apply(init : Double) = {
new Account2(newUniqueNumber,init)
}
private var lastNumber = 0
private def newUniqueNumber() = {
lastNumber += 1
lastNumber
}