Scala的静态方法和实例方法概述

Scala的对象学习

Scala没有静态方法或静态字段,可以使用object这个语法达到相同的目的,对象定义了某个类的单个实例

 object Accounts {

  private var lastNumber = 0

  /**
    * 定义一个getNumber的方法
    *
    * @return
    */
  def getNumber(): Int = {
    lastNumber += 1
    lastNumber
  }

  def main(args: Array[String]): Unit = {
    // 相当于java静态方法调用
   println(Accounts.getNumber())
  }

在java中,通常会出现一个类即有实例方法又有静态方法的类,在Scala中可以使用类和同名的伴生对象达到相同的目的

class Account {
// 实例方法
    ......
}
object Account {
// 静态方法
    ......
}

类和它的伴生对象可以相互访问私有特性,但前提是它们都在同一个源文件中

  • 抽象类
abstract class UndoableAction(val description: String) {
    def undo(): Unit
    def redo(): Unit
}

object DoNothing extends UndoableAction("Do nothing") {
    override def undo() {}
}
// 打开和保存功能尚未实现
val actions = Map("open" -> DoNothing,"save" -> DoNothing)
  • apply方法
通常一个apply方法返回的是伴生类对象
Array("Mary","had","little")
Array(100)new Array(100) 两者是不同的概念,前一个表达式调用的是apply(100),输出一个单元素整数100的Array[Int],而第二个表达式调用的是this(100),包含了100个null元素
以下是apply方法的示例
class Account private (val id:Int,initialBalance:Double){
    ......
}
 
 // 伴生对象
object Account {
    def apply(initialBalance:Double) = {
        new Account(1,initialBalance)
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值