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

一、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课 由王家林老师讲解

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值