scala基础12-单例对象/伴生对象

/*
 * 两个类名字相同,则object是class的伴生对象,伴生对象经常用于一些静态配置或隐式转换等
 * class是object的伴生类,半生类可以访问伴生对象的成员,包括private的
 * 但伴生对象并不在class的作用区内,所以访问伴生对象的成员时,需要加上类名
 */
class University {
  val id = University.newStudentNo
  private var number = 0
  
  def aClass(number: Int) = {
    this.number += number
  }
}

/*
 * object类,有点类似java中的静态类
 * 类中的所有成员都是静态的
 * 第一次使用的时候,成员才会被初始化
 */
object University {
  private var studentNo = 0
  
  def newStudentNo = {
    studentNo += 1
    studentNo
  }
}

object HelloOOP {
  def main(args: Array[String]) {
    println(University.newStudentNo)
    println(University.newStudentNo)
    
    val arr = Array(1, 2, 3) //不写new,其实使用的是伴生对象的方式创建
  }
}

你可能感兴趣的:(Scala)