单例对象
package level2
object Sc67 {
object Myschoool {
val name:String = "xxx学校"
def say(): Unit = {
println(s"say:${name}")
}
}
def main(args: Array[String]): Unit = {
// 对象名,属性名
Myschoool.name
// 对象名,方法名
Myschoool.say()
}
}
伴生类
package level2
object Sc68 {
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来修饰构造器,这样在类的外部就无法访问了。在伴生对象中提供获取这个实例的入口方法
package level2
object Sc69 {
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)
}
}