scala言语基础学习六

trait的学习

1、将trait作为接口来使用

trait中可以实现一些方法,子类只要extends 了trait就可以直接使用父trait里面的方法

普通继承的话父类和子类之间的field是通过引用访问,而trait之间的继承scala编译器会直接用同一个field

trait的抽象filed 继承者必须实现

为实例混入trait

trait调用链

 

在trait中覆盖抽象方法

此时不能调用因为是抽象方法

混合使用trait的具体方法和抽象方法

trait的构造机制

在具有继承和with多个trait的情况下,先调用父类的构造方法,然后再依次从左到右边调用trait的构造方法(只要不存在方法中的代码全部是trait的构造方法代码),最后调用自己的构造方法

 

案例

解决办法提前初始化1:

解决办法利用lazy2:

原文地址:https://www.cnblogs.com/yaohaitao/p/5624207.html