Chapter 04 《Classes and Objects》
2018-06-12 本文已影响3人
liqing151
- 类一旦创建之后,就可以使用
new
来实例化对象。类中的字段和方法被统称为成员。字段是实例变量,每一个实例拥有一个。
- 类一旦创建之后,就可以使用
- 追求健壮性的一个重要手段就是在对象的整个生命周期,对象的状态,也就是实例变量的值是有效的。第一种方法是将实例变量声明为
private
,保证所有对状态的操作,都在类的内部。Scala
中的默认访问级别就是public
。
- 追求健壮性的一个重要手段就是在对象的整个生命周期,对象的状态,也就是实例变量的值是有效的。第一种方法是将实例变量声明为
-
Scala
中定义的函数入参都是val
而不是var
,因此在方法中不能对入参进行重新赋值。方法返回的是计算出来的最后一个表达式的值。尽量避免return
关键字的出现。方法的返回类型虽然可以通过编译器推断出来,但是还是推荐将方法的返回类型标注出来,方便阅读者进行查看。方法的副作用通常指的是改变方法的外部状态或者执行I/O
操作。关于副作用在《Function Programming in Scala》
有详细的介绍。
-
单例对象
-
Scala
为了保持纯粹的面向对象特性(所有的值都是对象),不允许有静态变量的存在,因此设定了单例对象,该对象的定义和类定义很相似,使用关键字object
。
-
- 当单例对象和某个类共用同一个名字的时候,被成为该类的伴生对象,必须在同一个源码文件中进行定义,类和它的伴生对象可以相互访问对方的私有成员,可以直接使用
Object.Method
这样的格式来调用方法。
- 当单例对象和某个类共用同一个名字的时候,被成为该类的伴生对象,必须在同一个源码文件中进行定义,类和它的伴生对象可以相互访问对方的私有成员,可以直接使用
在class C中调用C.privateXMethod
在单例对象object C中调用(new C).privateYMethod
- 单例对象和类的区别,单例对象不接受参数,但是类可以接受。因为没有办法通过
new
来实例化单例对象,也就不可能进行传传参。每一个单例对象都是通过一个静态变量引用合成类(类名+$
)的实例来实现的。在代码首次访问时才被初始化。
- 单例对象和类的区别,单例对象不接受参数,但是类可以接受。因为没有办法通过
- 没有同名类的单例对象叫做孤立对象,可以是工具类,定义
Scala
应用程序的入口等。
- 没有同名类的单例对象叫做孤立对象,可以是工具类,定义
- 运行
Scala
程序,必须要提供给一个独立对象的名称。需要包含main
函数
- 运行
def main(args: Array[String]): Unit = {}
main
函数为程序的入口;也可以简单的通过extends App
来进行实现。
-
Scala
的每一个源码文件都隐式的引入了java.lang
和scala
包的成员,Predef
单例对象的所有成员。
-
- 使用
scalac
命令来编译源文件。每一次编译器启动的时候,都会扫描jar
文件以及完成一些其他的初始化工作,速度会比较慢。可以使用fsc
服务器守护线程,绑定在计算机的某个端口上,scala
的分发包会将源码发送给fsc
,因为已经在运行了,所以会立即编译。
- 使用