类和对象

1 类定义:

class ChecksumAccumulator {
// class definition goes here
}
你就能创建 ChecksumAccumulator 对象:
new CheckSumAccumulator

注:1scala类中成员默认是public类型,若设为私有属性则必须加private关键字。在scala中是public属性的地方可以省略public关键字。

2 Scala里方法参数的一个重要特征是他们都是val,不是var,

eg:

def add(b: Byte): Unit = {

b += 1 // 编译不过,因为 b 是 val

sum += b

}

3 def默认返回时Unit,若爸"Unit="去掉,则def默认返回的值会转换成Unit,若要指定返回类型,这需要将Unit指定为要转换的类型:

Unit 是函数f 声明的结果类型。 Scala 编译器会把一个以过程风格定义的方法,就是说,带有大括号但没有等号的,在本质上当作是显式定义结果类型为 Unit 的方法。例如:

scala> def g() { "this String gets lost too" }
g: () Unit

因此,如果你本想返回一个非Unit 的值,却忘记了等号时,那么困惑就出现了。所以为了得到你想要的结果,你需要插入等号:

scala> def h() = { "this String gets returned!" }

h: () java.lang.String

scala> h

res0: java.lang.String = this String gets returned!

2 Singleton对象

Scala比java更为面向对象的特点之一是Scala不能了定义静态成员,而是代之定义单例对象。

单例对象:Object 代替class关键字:

当单例对象与某个类共享同一个名称时,他被称作是这个类的 伴生对象: companion object 。你必须在同一个源文件里定义类和它的伴生对象。类被称为是这个单例对象的 伴生类: companion class 。类和它的伴生对象可以互相访问其私有成员。

类和单例对象间的一个差别是,单例对象不带参数 ,而类可以。因为你不能用new关键字实例化一个单例对象,你没机会传递给它参数。每个单例对象都被作为由一个静态变量指向的虚构类:synthetic class的一个实例来实现,因此它们与Java静态类有着相同的初始化语法。

不与伴生类共享名称的单例对象被称为独立对象
3 Scala 程序

特别要指出的是,单例对象会在第一次被访问的时候初始化。不与伴生类共享名称的单例对象被称为孤立对象: standalone object

要执行 Scala 程序,你一定要提供一个有main 方法(仅带一个参数,Array[String] ,且结果类型为Unit)的孤立单例对象名。任何拥有合适签名的 main 方法的单例对象都可以用来作为程序的入口点。代码:

编译 scala 源程序:

scalac xxx.scala

这将编译你的源文件,不过在编译完成之前或许会有一个可感知的停顿。原因是每次编译器启动时,都要花一些时间扫描jar 文件内容,并在即使你提交的是新的源文件也在查之前完成其他初始化工作。因此,Scala 的发布包里还包括了一个叫做fsc (快速Scala编译器)的Scala 编译器后台服务:daemon。你可以这样使用:

fsc xxx.scala 快速编译

相关推荐
翔云 OCR API1 小时前
承兑汇票识别接口技术解析-开发者接口
开发语言·前端·数据库·人工智能·ocr
小白学大数据2 小时前
基于Splash的搜狗图片动态页面渲染爬取实战指南
开发语言·爬虫·python
xlq223222 小时前
22.多态(下)
开发语言·c++·算法
未来之窗软件服务3 小时前
操作系统应用(三十三)php版本选择系统—东方仙盟筑基期
开发语言·php·仙盟创梦ide·东方仙盟·服务器推荐
是Dream呀3 小时前
昇腾实战|算子模板库Catlass与CANN生态适配
开发语言·人工智能·python·华为
零匠学堂20253 小时前
移动学习系统,如何提升企业培训效果?
java·开发语言·spring boot·学习·音视频
小杨快跑~3 小时前
从装饰者到桥接再到工厂:模式组合的艺术
java·开发语言·设计模式
say_fall3 小时前
C语言编程实战:每日一题:随机链表的复制
c语言·开发语言·链表
拾贰_C3 小时前
【Python | Anaconda】 python-Anaconda 一些命令使用
开发语言·python
二川bro4 小时前
循环性能提升:Python向量化计算技巧
开发语言·python