scala单例对象(伴生对象)使用场景

说明

我们都知道,静态成员在 Java 中有很大的作用,因为 Java 没有全局变量,也不存在包级函数,一切属性和方法都是在类里面,所以在写一些工具函数和全局变量时,都需要用到 static 关键字修饰的静态成员。
由于scala移除了static关键字,有时候我们又需要实现类似的功能,这个时候可以使用类的伴生对象来实现,使得一些属性、方法能够在更大的作用域生效

实现

object Object {
  def main(args: Array[String]): Unit = {

    val student3 = new Student3
    student3.printInfo()

  }

}

//定义类
class Student3(var school: String = Student3.school, var name: String = "小明", var age: Int = 23) {
  def printInfo(): Unit = {
    println(s"student3: SCHOOL = $school NAME = $name AGE= $age")
  }
}

//伴生对象
object Student3 {
  //相当于java中的静态属性,也就是整个类共有的属性
  val school: String = "XY"
}

通过伴生对象的 apply 方法,实现不使用 new 方法创建对象。

object Object {
  def main(args: Array[String]): Unit = {

    val student3 = Student3.apply("李华", 21)
    //.apply可以省略
    val student = Student3("小黑", 23)
    
    student3.printInfo()
    student.printInfo()

  }

}

//定义类
class Student3(var school: String = Student3.school, var name: String = "小明", var age: Int = 23) {
  def printInfo(): Unit = {
    println(s"student3: SCHOOL = $school NAME = $name AGE= $age")
  }
}

//伴生对象
object Student3 {
  //相当于java中的静态属性,也就是整个类共有的属性
  val school: String = "XY"

  def apply(name: String, age: Int): Student3 = new Student3(Student3.school, name, age)
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值