scala学习之路:8.staticObject与伴生类伴生对象

class  University {
  val id = University.newStudentNo  // 访问自己的伴生对象的成员名称:newStudentNo需要添加半生对象名称
  private var number = 0
  def aClass (number : Int ) {this.number += number}
  
}
// 只有在第一次使用的时候才执行  这里会调用默认的构造器 没有参数
//这里的 University 是 class University的半生对象 这个类可以访问半生对象的成员 
//包括私有的成员 必须加上半生对象的名称以及变量  
//同理   class University 是 University的伴生类
object University {  // 静态方法区  ,或者公共变量区 
 
  private var  studentNo = 0
   def newStudentNo = { //   此处静态成员或者是静态方法不能用 private 修饰 
    studentNo += 1  //  把私有的 变量+1
    studentNo         // scala中最后一行就是返回内容
  }
}

object dt03ObjectStatic {
  
  def main(args: Array[String]): Unit = {
    println(University.newStudentNo)
    println(University.newStudentNo)
    
    
//    这也是 半生对象的使用
    val arra = Array(1,3,5,78,9)
    
  }
}


apply使用:

class ApplyOperation {

}
class ApplyTest {
  def apply() = println("I am into spark so much !!!")

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

object ApplyTest {
  def apply() = {
    println("I am into Scala so much !!!")
    new ApplyTest
  }

}

object ApplyOperation extends App {

  //          val a = ApplyTest() //I am into Scala so much !!!
  //          a.haveATry          //Hava a try on apply!

  //     先经过伴生对象的 apply 方法  
  val apl = new ApplyTest

  apl.haveATry

  apl.apply() //这三句打印结果一样 
  apl()
  println(apl()) // 不加()就是打印对象的地址了 点击鼠标跳转到 class ApplyTest

}



你可能感兴趣的:(scala学习之路:8.staticObject与伴生类伴生对象)