创建对象的方式:
- class -> new
- 直接通过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)
}
}