1. 单例对象
- 单例对象顾名思义只有一个对象
- Scala中没有静态方法和静态字段,但是可以使用object这个语法结构来达到同样的目的
object SingletonDemo {
println("单例对象")
def main(args: Array[String]): Unit = {
val s1 = SingletonDemo
println("s1: " + s1)
val s2 = SingletonDemo
println("s2: " + s2)
}
}
2 . 伴生对象
在Scala的类中,与类名相同的对象叫做伴生对象,类和伴生对象之间可以相互访问私有的方法和属性
class Dog {
val id = "01"
private var name = "dog01"
def printName: Unit = {
//在Dog类中可以访问伴生对象Dog的私有属性
println(Dog.CONSTANT + name)
}
}
object Dog {
//伴生对象的私有属性
private val CONSTANT = "汪汪汪"
def main(args: Array[String]): Unit = {
val d = new Dog
//访问类中私有的字段name
d.name = "dog~~~"
d.printName
}
}
3 . apply方法
通常我们会在类的伴生对象中定义apply方法,当遇到类名(参数1,…, 参数n)时,apply方法自动会被调用
object Cat {
def apply(): Cat = {
println("调用无参apply方法")
new Cat
}
def apply(name: String): Cat = {
println("调用有参apply方法")
new Cat(name)
}
def main(args: Array[String]): Unit = {
val c = Cat() //调用了apply()
val c2 = Cat("猫") //调用了apply(name)
}
}
class Cat {
def tscalahis(name: String) {
this
println("调用了有参构造函数")
}
}
4. 应用程序对象
object AppObjectDemo extends App{
println("I love you, Scala!")
}