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!")
}
本文深入探讨了Scala中的四个关键概念:单例对象、伴生对象、apply方法及应用程序对象的使用方式。通过具体示例,读者将了解到如何创建单例对象以实现类似于静态方法的功能;伴生对象与类之间的交互及其如何访问私有成员;apply方法如何简化对象实例化过程;以及如何利用应用程序对象简化主入口函数的编写。
--- 对象&spm=1001.2101.3001.5002&articleId=70853766&d=1&t=3&u=d6c9f1c5109f4e3ea1323caac1ee02d1)
3223

被折叠的 条评论
为什么被折叠?



