私有方法 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") } }