scala基础7 —— scala的静态类型(object)

本文介绍了Scala中代替static的关键字object,讲解了单例对象、伴生对象的概念和用法,包括构造时机、应用场景。此外,还讨论了object对象的扩展(继承)、作为程序入口的main函数定义以及如何通过apply方法简洁地创建对象。
摘要由CSDN通过智能技术生成

概述

scala语言中是没有static关键字的,也就是说不能将类的方法或者字段声明为static,那如何实现相同的功能呢。scala提供了object关键字来实现同样的功能。

单例对象

java中static关键字表明类只有这一个对象(即单例对象),scala是通过object关键字来定义,我们定义如下;

object Accounts {
   
  private var curAmountNum = 0

  def getUniqNum() = {
    curAmountNum += 1
    curAmountNum
  }
}

一些注意说明如下:
1. 构造时机:
object关键字定义的“对象”并不会在一开始被构造,而是在第一次使用时被构造,比如调用了Accounts.getUnuqNum()时候。
2. object和类拥有很多同样的特性,例外的是:不能提供构造器参数。

object对象常见使用场景:

  • 存放一些工具函数或者常量
  • 共享不可变实例
  • 单例模式的一种实现

伴生对象

在java中,我们大部分需要的是静态对象和非静态对象结合的类,在scala中,是通过object定义和class类同名的object对象“伴生”达到同样目的。

class Accounts(var balance : Double = 0.0) {
   
  val id = Accounts.getUniqNum()
  def addBalance(amount : Double) : Unit = {balance += amount}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值