1.Object 单例对象 定义
类似Java中的 静态对象
即定义在 object中的所有成员变量 和 方法都是静态的
eg:
调用的话:
类名.方法 或 类名.变量, 直接调用, 不用实例化类对象
可见 personId 是静态对象, 每次会自动累加。
ps: 伴生对象 是没有参数列表的,不能 在伴生对象的 参数列表中 声明变量
eg2:
object People {
var id:Int =0
def newId(): Int ={
id += 1
return id
}
class People(val name:String){
def info(): Unit ={
val lastId = People.newId()
printf("people's name is %s, id is %d \n", name,lastId)
}
}
def main(args: Array[String]): Unit = {
val p1 = new People("张三")
p1.info()
val p2 =new People("李四")
p2.info()
}
}
输出:
2.单例对象又分为两种 伴生对象 和 孤立对象
2.1.伴生对象:
即指一个Scala代码文件中 既定义了 object 单例对象,又有 class定义的 类对象,且两个 类对象名称相同
eg:
伴生类对象和伴生单例对象 可以互相访问内部的成员
调用:
输出:
ps:伴生对象 不能
2.孤立对象:
即一个Scala代码文件中 定义了object 单例对象 但是没有 定义和其名称相同的class 类对象。
eg:
3. 使用case 关键字, 创建 case类, Scala会自动生成该类的伴生对象
https://blog.youkuaiyun.com/hzp666/article/details/116126620
eg:
case class People(val dname:String){ } val zs = People("张三") println(zs.dname)
输出: