伴生类和单例对象

16 阅读1分钟

创建对象

package level02

object Class07 {
 object Myschool {
   val name:String = "xxx学校"

   def say(): Unit = {
     println(s"say:${name}")
   }
 }
  def main(args:Array[String]): Unit = {
    Myschool.say()
  }
}

类(class)和对象(object)同名

package level02

object Class08 {
  class Student(private val password:String) {
    private def validatePassword(input:String):Boolean = {
      input == password
    }

  }
  object Student {
    def check(stu:Student,pwd:String):Boolean = {
      stu.validatePassword(pwd)
    }
  }
  def main(args:Array[String]):Unit = {
    val stu1 = new Student("12345")
    if(Student.check(stu1,"12345")){
      println("验证通过")
    }

  }
}

单例模式

一个类(class)只能有一个对象

package level02

object Class09 {
  class Student private(var name:String,var age:Int) {

  }
  object Student {
    private val ins = new Student("小花",18)
    def getInstance:Student = ins
  }
  def main (args:Array[String]):Unit = {
    val stu1 = Student.getInstance
    val stu2 = Student.getInstance
    println(stu1 == stu2)
  }
}