Scala学习笔记--特质

在scala中,特质相当于java中的接口,但是其功能要强大 点多。scala不允许类从多个超类继承
1.如下是一个特质,是具有接口性质的功能
1>log是一个抽象方法,不需要再前面加关键字abstract
这里写图片描述
2>子类实现,使用extends继承。复写方法的时候,def前面不需要加override
这里写图片描述
3>如果你需要多个特质,需要用with关键字
这里写图片描述
4>特质里面不一定都是抽样方法,也可以是实现的方法
这里写图片描述
5>如果log是抽象方法的时候则,复写的时候,里面有super.log调用哪一个特质是不确定的,而且TimestampLogger特质并没有将log方法实现,因此必须在前面加上override和abstract
Scala学习笔记--特质_第1张图片
6>Scala中多继承
Scala学习笔记--特质_第2张图片
* 构造的顺序是从左往右
* Human首先被构造了,之后 构造TTeacher和PianoPlayer就不会再Human
* 打印结果:
* Human
* TTeacher
* PainoPlayer
* I’m playing piano
* I’m training students.
*/
Scala学习笔记--特质_第3张图片
7>AOP的实现
Scala学习笔记--特质_第4张图片

调用:
这里写图片描述
上实现的执行过程如下:
* TBeforeAfter”混入”到了Work中,因此在执行t3.doAction的时候,实际上是先去执行TBeforeAfter中的内容的
* 执行期间遇到 super.doAction ==>这个时候指的就是Work中的doAction方法
因此打印结果如下:
Initialization
Working….
Destroyed

你可能感兴趣的:(scala)