scala对象

scala对象


1.单例对象

        Scala没有静态方法或静态字段,但是可以用object这个语法结构来达到静态化的目的。对象定义了某个类的单个实例。
//定义一个单例对象
object Accounts{
     private var num = 0
    def newNum() = {num += 1;num}
}

//直接通过 对象名.方法名 就可以调用对象的方法
println(Accounts.newNum)


对象的构造器在对象方法首次被调用的时候执行,如果一个对象没有被使用,则其构造器也不会被执行。


对象本质上可以拥有类的所有特性,但是不能给对象提供构造器参数。
使用对象的地方:
(1)作为存放工具函数或常量的地方;
(2)高效地共享单个不可变实例;
(3)需要单个实例来协调某个服务时。


2.伴生对象


在Java中,通常会用到既有实例方法又有静态方法的类。在scala中,可以通过类和与类同名的“伴生”对象来达到同样的目的。
    class Accounts{
      val id = Accounts.newNum()
      private var balance = 0.0
      def deposit(amount:Double) = balance + amount
      //......
    }
    
    object Accounts{//伴生对象
      private var num = 0
      def newNum() = {num += 1;num}
    }


类和它的伴生对象可以相互访问私有特性,它们必须同属于同一个源文件中。

3.apply方法

通常会定义和使用对象的apply方法,当遇到如下形式的表达式时候,apply方法就会被调用。


object(参数1,参数2,.....参数n)

如:
Array对象定义了apply方法,我们就可以通过下面的表达式来创建数组而不需要new关键字。
Array("name1","name2","name3")

定义apply方法的例子:
    class Accounts(val id:Int, iniNum:Double){
     private val balance = iniNum
      //......
    }
    
    object Accounts{//伴生对象
      private var num = 0
      def apply(iniNum:Double) = new Accounts(id,iniNum)
    }

4.应用程序对象

每一个scala程序都必须从一个对象的main方法开始,main方法的类型为

Array[String] => Unit
object HelloWorld{
    def main(args:Array[String]):Unit={
      // do something
    }
}


当然,和java一样,在程序中可以访问传入的参数,如:args(0)


5.枚举

scala没有枚举类型,不过可以使用标准库中Enumeration助手类来产生枚举。



>>>>>__以上内容摘自:《快学Scala》  [美]Cay S. Horstmann著   电子工业出版社__<<<<<








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值