package level02
/**
* apply
* 作用:写在伴生对象中,就可以允许创建对象的时候,省略new
*/
object Base66 {
// 伴生类
class Logger(){}
// 伴生对象
object Logger {
val instance = new Logger()
def apply(): Logger = {
println("Logger.....")
instance
}
}
def main(args: Array[String]): Unit = {
// 创建一个类的对象
// val log1 = new Logger()
// 在伴生对象中提供了apply方法,那么这里就会自动去调用它
val log1 = Logger()
val log2 = Logger()
println(log1 == log2) // 这里会输出什么 true ,因为它得到都是同一个对象
}
}
输出结果
在面向对象方面,Scala 中一切皆为对象,没有基本数据类型的概念,即使是整数、布尔值等也都是对象。而在函数式编程上,它强调不可变性,鼓励使用纯函数(无副作用的函数),这有助于编写更健壮、易测试的并发程序。