scala_day02
Java线程的实现方法
1 继承Thread,重写run()
2 实现Runnable接口,重写run()
3 线程池
java.util.concurrent包
Callable
Future
共享数据 -> 需要加锁 synchronize 互斥锁
锁定基本都是使用读写锁
乐观锁和悲观锁
1 面向对象的类、对象、trait和继承
1.1 类
1.2 对象
object 相当于 class 的单个实例,通常在里面放一些静态的 field 或者 method;<br />
在Scala中没有静态方法和静态字段,但是可以使用object这个语法结构来达到同样的目的。
如果有一个class文件,还有一个与class同名的object文件,那么就称这个object是class的伴生对象,class是object的伴生类
? 伴生类和伴生对象必须存放在一个.scala文件中;
? 伴生类和伴生对象的最大特点是,可以相互访问;包括private的属性。
1.3 apply方法和main方法
object 中非常重要的一个特殊方法,就是apply方法,当遇到类名(参数1,...参数n)时apply方法会被调用。<br />
main方法有两种形式,自定义和继承App。
1.4 继承
类的继承是单继承,用extends关键字。子类可以继承父类的属性和方法。override可以覆盖父类的方法和val的属性<br />
类型转换可以使用asInstanceOf实现,而类型的判断需要使用isInstanceOf 或者 是 getClass和classOf实现。
子类必定会调用父类的构造器,但是只能在主构造器中调用。
抽象类、抽象方法和抽象属性
1.5 trait
trait可以当做接口使用,也可以当做抽象类使用。<br />
traint里面可以有抽象和非抽象的 属性和方法。
trait实现了多重继承,多个trait可以使用extends 和 with关键字进行继承。
继承了trait的子类,其构造机制如下:
? 父类的构造函数先执行, class 类必须放在最左边;
多个trait从左向右依次执行;构造trait时,先构造父 trait,<br />
如果多个trait继承同一个父trait,则父trait只会构造一次;
所有trait构造完毕之后,子类的构造函数最后执行。
创建对象时,使用 with 关键字指定混入某个 trait,混入后该对象具有trait的所有成员。
trait的调用链实现。
2 模式匹配和样例类
几种常见的模式匹配方式: 字符串匹配、类型匹配、数组/元组/List匹配、偏函数
可以使用样例类实现自定义数据的模式匹配。
case class和 case object