Scala 学习(八)--- 对象

本文深入探讨了Scala中的四个关键概念:单例对象、伴生对象、apply方法及应用程序对象的使用方式。通过具体示例,读者将了解到如何创建单例对象以实现类似于静态方法的功能;伴生对象与类之间的交互及其如何访问私有成员;apply方法如何简化对象实例化过程;以及如何利用应用程序对象简化主入口函数的编写。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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!")
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值