scala访问java静态方法_Scala的静态方法和实例方法

本文介绍了Scala如何通过object替代静态方法,详细讲解了伴生对象的概念和使用,包括如何在Scala中模拟Java的静态方法调用,以及伴生对象与类的相互访问私有特性的实现。同时,文章还探讨了Scala中的抽象类、apply方法的用法,并通过实例展示了其在创建对象时的角色。
摘要由CSDN通过智能技术生成

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、付费专栏及课程。

余额充值