Scala_伴生对象

目录

1.什么是伴生对象和伴生类

2.怎样理解伴生对象

3.语法

4.伴生对象的特性

4.1 伴生对象、伴生类必须定义在同一个.scala文件中

4.2 私有属性相互使用

4.3 伴生对象只会初始化一次

5.怎样获取伴生对象和伴生类对象

6.使用场景

7.单例对象和类的区别


1.什么是伴生对象和伴生类

scala 允许定义 和class结构同名的 object结构
    object称之为 伴生对象
    class 称之为 伴生类
    当只有 object对象时,我们也称这个对象为 单例对象、孤立对象

2.怎样理解伴生对象

object相当于 在加载class之前生成的一个单例对象(内存中唯一)
     所有 object 中定义的 公共属性和方法 都是`静态`方法

3.语法

object 对象名称 { 成员属性、成员方法 }

4.伴生对象的特性

4.1 伴生对象、伴生类必须定义在同一个.scala文件中

伴生对象 和 伴生类(如果定义了) 必须在一个scala源文件中
Companions 'class Person' and 'object Person' must be defined in same file:

4.2 私有属性相互使用

class Person() {
  private val age: Int = 100

  /* 伴生类中的无参构造 */
  println("--伴生类中的无参构造--")

  /* 伴生类中 可以使用 伴生对象的私有属性 */
  println(s"获取私有属性-${Person.name}")
}

object Person {
  val name: String = "大王"

  /* 伴生对象中的无参构造 */
  println("--伴生对象中的无参构造--")

  /* 伴生对象中 可以使用 伴生类中的私有属性 */
  private val person = new Person()
  println(person.age)
}

4.3 伴生对象只会初始化一次

object Person {
  val name: String = "大王"

  /* 伴生对象中的无参构造 */
  println("--伴生对象中的无参构造--")

  /* 伴生对象中 可以使用 伴生类中的私有属性 */
  private val person = new Person()
  println(person.age)
}

/* 验证 伴生对象 只会初始化一次 */
object Test extends App {
  println(Person.name)
  println(Person.name)
  println(Person.name)
}

--伴生对象中的无参构造--
大王
大王
大王

5.怎样获取伴生对象和伴生类对象

  // 获取伴生类对象
  new Person()
  // 获取伴对象
  Person

6.使用场景

工具类、单例模式、初始化基础配置内容

7.单例对象和类的区别

单例对象不能接受参数 而类可以
单例对象 在代码首次访问时才会被初始化
单例对象 是静态变量引用的合成类的实例
  • 15
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT老王Hua_TZ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值