package Test0
//伴生类
class Person(var userName:String,private val password:String){
//私有方法
private def validatePassword(input: String):Boolean={
input == password
}
}
//伴生对象
object Person{
def check(u:Person,pwd:String):Boolean={
//validatePassword是私有的方法
//但是,在伴生对象中,还是可以的!!!
u.validatePassword(pwd)
}
}
object TestClassAndObject {
def main(args: Array[String]): Unit = {
var p1 = new Person("小明","1234567")
println(Person.check(p1,"1234567"))
}
单例模式
package Test0
//单例模式:让一个类只能产生一个对象
//伴生类
class Logger private(){
def log(message:String):Unit={
println(message)
}
}
//伴生对象
object Logger{
private val instance = new Logger()
//唯一个方式可以去访问这个对象
def getInstance():Logger = {
instance
}
}
object TestSindle {
def main(args: Array[String]): Unit = {
//var l1 =new Logger() 构造函数添加了private,所以在类的外部有无法访问
//var l2 = new Logger()
var l1=Logger.getInstance()
var l2=Logger.getInstance()
println(l1==l2)// true,说明这个对象是唯一的
l1.log("test")
}
}