在scala中,特质相当于java中的接口,但是其功能要强大 点多。scala不允许类从多个超类继承
1.如下是一个特质,是具有接口性质的功能
1>log是一个抽象方法,不需要再前面加关键字abstract
2>子类实现,使用extends继承。复写方法的时候,def前面不需要加override
3>如果你需要多个特质,需要用with关键字
4>特质里面不一定都是抽样方法,也可以是实现的方法
5>如果log是抽象方法的时候则,复写的时候,里面有super.log调用哪一个特质是不确定的,而且TimestampLogger特质并没有将log方法实现,因此必须在前面加上override和abstract
6>Scala中多继承
* 构造的顺序是从左往右
* Human首先被构造了,之后 构造TTeacher和PianoPlayer就不会再Human
* 打印结果:
* Human
* TTeacher
* PainoPlayer
* I’m playing piano
* I’m training students.
*/
7>AOP的实现
调用:
上实现的执行过程如下:
* TBeforeAfter”混入”到了Work中,因此在执行t3.doAction的时候,实际上是先去执行TBeforeAfter中的内容的
* 执行期间遇到 super.doAction ==>这个时候指的就是Work中的doAction方法
因此打印结果如下:
Initialization
Working….
Destroyed