scala中的object 和java的class有什么区别?

用自己的话简单说就是:

scala没有静态方法和静态字段,通过object来实现 对象名直接调用方法。

形如Array.toString

 

眼见为实,在网上看到一个例子,动手操作之后我是这么理解的。

ApplyExample.main(null) 运行主类

Class和Object同名的话,则这个Class是Object的伴生类,Object可以静态的调用方法。两者都可以定义apply方法。

 

首先调用 ApplyTest()   也就是类名()的形式,其实是直接通过object类名调用apply()方法。

返回一个new ApplyTest()的对象给at,那么at又是class的对象名,这次是真的把class实例化了,所以是对象名()的形式,调用的还是apply()方法。

 

class ApplyTest{

 def apply() {

  println("This is a class, apply()...")

 }

}

 

object ApplyTest{

 def apply() = {

  println("This is an object, apply()...")

  new ApplyTest()

 }

}

 

object ApplyExample {

 def main(args: Array[String]) {

  var at=ApplyTest()

  at()

 }

}

运行结果:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值