类和对象

31 阅读1分钟
package level02
/*
创建对象的方式:
1 class  ->  new
2 直接通过object来定义(单例对象,只有一个,孤单)
  适用了数据存储,提供一些工具方法,公用方法.....
 */
object Class07 {
  object Myschool {
    val name:String = "xxx学校"

    def say():Unit = {
      println(s"say:${name}")
    }
  }

  def main(args: Array[String]): Unit = {
    //对象名.属性名
    Myschool.name
    //对象名.方法名
    Myschool.say()
  }
}

类(class)和对象(object)同名,且在同一个文件中,此时,他们互为伴生关系

特点:可以相互访问对方的私有(private)成员

package level02
/*
类(class)和对象(object)同名,且在同一个文件中,此时,他们互为伴生关系
伴生类,伴生对象
特点:可以相互访问对方的私有(private)成员
 */
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={
      //在伴生对象的内部,可以访问类的private成员
      stu.validatePassword(pwd)
    }
  }

  def main(args: Array[String]): Unit = {

    val stu1 = new Student("12345")
    if(student.check(stu1,"12345")){
      println("验证通过!")
      //在类的外部,无法访问类的private成员
    }
  }
}