object 静态类:
1,scala 之中是没有静态方法和静态字段的,可以使用 object 关键字加类名的语法结构来实现的
2,工具类,存放常量和工具方法
3,实现单例模式
package day01
import scala.collection.mutable.ArrayBuffer
object Test12 {
def main(args: Array[String]): Unit = {
val fa= SessionFactu
println(fa.getSession)
println(fa.getSession.size)
println(fa.getSession(0))
println(fa.removesession)
}
}
object SessionFactu{
println("session get")
var i = 5
private val session =new ArrayBuffer[Session]()
while (i>0){
session += new Session
i -= 1
}
def getSession = session
def removesession :Unit={
val s = session(0)
session.remove(0)
println("session had remove")
}
}
class Session{
}
伴生对象:
1,与类名相同并且用object修饰的对象叫做伴生对象,比如 List 列表就是伴生对象
2,类对象其伴生对象之间可以互相访问方法与属性
package day01
class Test13 {
private var name = "tom"
Test13.age = 12
// 更改伴生对象属性!
println(Test13.age)
}
object Test13{
var age = 13
def main(args: Array[String]): Unit = {
val tel = new Test13
// 伴生对象更改类对象属性!
tel.name = "jeek"
println(tel.name)
}
}
伴生对象 applay 与 unapplay:
1, applay 注入方法,在伴生对象之中做一些初始化的操作
2, applay 的参数列表可以和构造器参数列表不统一
3,unappplay 常为提取方法,用来提取固定数量的对象
4,会返回一个序列(Option),内部生成一个 some对象,
5,applay 与 unappplay 会被隐式调用
package day01
class Test13(val name:String,val age:Int,val face:Int) {
}
object Test13{
// 注入方法,在伴生对象之中,applay 相当于初始化方法!
// 可以和构造器参数列表不统一
def apply(name:String,age:Int,face:Int,gender:Int) =
new Test13(name,age,face)
// 使用 unapplay 用来提取固定数量的对象!
def unapply(test13: Test13): Option[(String,Int,Int)] = {
if (test13 == null){
None
}else{
// unapply 提取的对象封装给 Some 之中
Some(test13.name,test13.age,test13.face)
}
}
}
object test{
def main(args: Array[String]): Unit = {
// 创建实例 执行的是 applay 的方法!
val test13 = Test13("abc",21,0,34)
test13 match {
// 此时隐式调用的是 unapplay方法!
case Test13("abc",age,face) => println(s"age: $age")
case _ => println("no mavhe")
}
}
}