您的位置:首页 > 移动开发

Scala学习笔记11【单例对象、伴生对象、Apply方法】

2015-10-09 11:12 281 查看
Scala类之单例对象、伴生对象、Apply方法

单例对象:Scala不能定义静态成员,而是代之定义单例对象(singleton object)。

以object关键字定义,对象定义了某个类的单个实例。

伴生对象:当单例对象与某个类共享同一个名称时,它就被称为是这个类的伴生对象(companion object)。

这个类可以访问伴生对象的所有成员。

代码示例:

class University{
val id = University.newStudentNo
private var number = 0
def aClass(number: Int){this.number += number}
}

//与类同名,亦为University类的伴生对象
object University{        //被使用时才加载
private var studentNo = 0
def newStudentNo = {    //想被外部使用则不能声明为private
studentNo += 1
studentNo
}
}

object test {
def main(args: Array[String]): Unit = {
print(University.newStudentNo + "  ")
print(University.newStudentNo + "  ")
print(University.newStudentNo + "  ")
print(University.newStudentNo + "  ")
print(University.newStudentNo + "  ")
}
}

//运行结果:
1  2  3  4  5


Apply方法常用示例程序:

class Apply{
def apply() = println("我在学习Spark。")

def haveATry{
println("Have a try on apply!")
}
}

object Apply{
def apply() = {
println("我在学习Scala。")
new Apply    //返回Apply类的对象实例
}
}

object ApplyTest {
def main(args: Array[String]): Unit = {
val array = Array(1,2,3,4,5)

//类名后加括号,相当于调用伴生对象的apply方法
val a = Apply()
a.haveATry
println

//对象加括号相当于调用对象的apply方法
println(a())
}
}

//运行结果:
我在学习Scala。
Have a try on apply!

我在学习Spark。
()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: