trait的学习
1、将trait作为接口来使用
trait中可以实现一些方法,子类只要extends 了trait就可以直接使用父trait里面的方法
普通继承的话父类和子类之间的field是通过引用访问,而trait之间的继承scala编译器会直接用同一个field
trait的抽象filed 继承者必须实现
为实例混入trait
trait调用链
在trait中覆盖抽象方法
此时不能调用因为是抽象方法
混合使用trait的具体方法和抽象方法
trait的构造机制
在具有继承和with多个trait的情况下,先调用父类的构造方法,然后再依次从左到右边调用trait的构造方法(只要不存在方法中的代码全部是trait的构造方法代码),最后调用自己的构造方法
案例
解决办法提前初始化1:
解决办法利用lazy2: