环境: 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的伴生类。因此单例对象可以没有相对应的伴生类。
下一篇将通过例子具体了解。
Scala 类认识
时间: 2024-10-10 23:15:37