10.Scala单例对象、伴生对象实战详解

来源:互联网 发布:蜀地割据知乎 编辑:程序博客网 时间:2024/06/05 10:29

一、Scala单例对象详解

在Scala中,没有像Java中的静态类、静态成员、静态方法,但提供了Object对象,类似Java中的静态类,它里面的所以成员(变量、方法)都是静态的


object University{  println("hello") private var studentNo = 0  def newStudentNo = {    studentNo += 1    studentNo  }}object ObjectOps{  def main(args: Array[String]): Unit = {    println(University.newStudentNo)    println(University.newStudentNo)  }}

输出:

hello

1

2

Java中,类里的静态模块当类被加载进来就会被执行

scala中,object里除了方法的代码,只有在第一次使用时才会被执行

object可作为静态方法、静态成员、公共变量的集合区 eg:一些配置属性初始化可放在object里

二、scala伴生对象代码实战

当类和对象有相同的名字时,我们称为其为对方的伴生类、伴生对象。

它们必须定义在同一个源文件中。

class University{  var id = University.newStudentNo  //伴生类可以访问伴生对象的所有成员,包括其私有的成员.反过来亦如此。即伴生类和对象可相互访问其私有成员                                    //但object University并不是在class University的作用域内,所以newStudentNo前需要用University.  private var number = 0  def aClass(number : Int){ this.number += number}}object University{  private var studentNo = 0  private def newStudentNo = {    studentNo += 1    studentNo  }}

当类class和对象object的名字相同时

如上,class University是object University的伴生类

object University是class University的伴生对象

伴生类可以访问伴生对象的所有成员,包括其私有的成员


    val array = Array(1,2,3,4)

apply属于object Array

新构建一个类时,如果不写new 某个类,就是用伴生对象的apply()来构建的



参考资料来源于 DT大数据梦工厂 Scala零基础实战经典第10课 由王家林老师讲解

原创粉丝点击