类和对象

56 阅读1分钟

创建对象的方式:

  1. class -> new
  2. 直接通过object来定义(单例对象,只有一个,孤单) 使用了数据存储,提供一些工具方法,公用方法......
package leve02

object Class06 {
 object Myschool {
   val name:String = "xxx学校"
   def say():Unit = {
     println(s"say:${name}")
   }
 }
  def main(args:Array[String]):Unit = {
   Myschool.say()
  }
}
  • Myschool.name对象名.属性名
  • Myschool.say方法名()
package leve02

object Class07 {
  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)和对象(object)同名,且在同一个文件中,此时它们互为伴生关系。
  • 半生类半生对象
  • 特点:可互相访问对方的私有(private)成员
package leve02

object Class08 {
 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)
  }
 }