Scala 类认识

环境: CentOS 6.3, eclipse
定义类:

我们先看如何定义一个实现‘字节校验和’类定义代码:

package scala
import scala.collection.mutable.Map

class ChecksumAccumulator {
  private var sum = 0;
  def add(b: Byte) = sum += b
  def checksum() = ~(sum & 0xFF) + 1
}


如何运行程序:

错误方式:

根据Java经验,加入main 方法,无法运行。

package scala
import scala.collection.mutable.Map

class ChecksumAccumulator {
  private var sum = 0;
  def add(b: Byte) = { sum += b }
  def checksum() = ~(sum & 0xFF) + 1

  def main(args: Array[String]) {
    for (arg <- args) {
      arg.foreach(c => add(c.toByte))
      println(checksum())
    }

  }
}

 

正确方式1:

把程序定义成object。

package scala

object Summer {
  def main(args: Array[String]) {
    val ck = new ChecksumAccumulator()
    for (arg <- args) {
      arg.foreach(c => ck.add(c.toByte))
      println(ck.checksum())
    }
  }
}

正确方式2:

定义一个新的object, 生成ChecksumAccumulator 类对象并使用。

package scala
import scala.collection.mutable.Map

object ChecksumAccumulator {
  private var sum = 0;
  def add(b: Byte) = { sum += b }
  def checksum() = ~(sum & 0xFF) + 1

  def main(args: Array[String]) {
    for (arg <- args) {
      arg.foreach(c => add(c.toByte))
      println(checksum())
    }

  }
}


class 和 object 的区别:

class 定义类,就像对象的模子。object 在scala里面叫单例对象,不可以通过new 方式生成新的对象,因此object定义的就是个对象。

如果object名字与某个class名字一样,object 就叫做class的伴生对象,class叫做object的伴生类。因此单例对象可以没有相对应的伴生类。

 

下一篇将通过例子具体了解。

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值