1、class、field和method
类、属性与方法。这里的field就是java中的 instance variable。
acc、csa就等同于java中的reference variable,它们指向一个具体的object。因为是val,所以它们不能再被赋予其他object。
不过对于它们指向的具体的object,object的fields可能可以改变。
为了保护fields不被outsider随意更改,可以让它们为 private,这个和java也是一样的。在scala中public是默认的。
在 def function的时候,形如
没有 = 号的话 这个函数的type 就默认为 unit了。
2、singleton objects
单例对象
scala比java更 object-oriented的一点是 scala的class中没有静态成员。(chapter1说在scala中every value is an object and every operation is a method call )
那静态成员放到哪里呢,就有了singleton objects.
如果 singleton object和一个class的名字一样,那么这个object称为这个class的companion object 伴生对象。它俩定义必须在同一个文件里面。
singleton object 可以认为是 有一个 name tag的object.
单独定义一个 singleton object 并不意味着你可以 new一个 这样type的object出来,只有对 class才能new。
3、a scala application
要运行一个scala程序,必须有一个 含有main方法的standalone singleton object。这个main方法的输入只有一个参数,result type为unit.
standalone是指这个singleton object 没有伴生类。
.scala文件也需要被编译后才能运行
4、application trait
extend application 特质后,在括号中可以直接写main方法的语句。不过这个写法不能在终端输入 参数,也不能并行。