嵌套类
基本介绍
构建对象的时候同时混入多个特质,称之为叠加特质,那么特质声明的顺序从左到右,方法执行顺序从右到左
- 在叠加特质的时,首先从左到右特质开始执行
- Scala中如果特质调用super,并不是表示调用父特质的方法,而是向前面(左边)继续查找特质,如果找不到才回去父特质查找
- 当我们在执行特质的方法的时候我们时从右到左执行特质
- 当执行到super时,执行的时左边的特质,只有当找不到特质的时候才回去执行父类的方法
叠加特质的细节和注意事项
- 特质生命顺序从左到右
- Scala在执行叠加对象的方法时,会首先从后面的特质,从右到左开始执行
- Scala中如果调用super,并不是调用父特制的方法,而是向卡面积
- 如果向调用具体特制的方法,可以执行 super[特质].xxx,其中的泛型必须时持改特制的超类型
在特质中重写抽象方法
如何理解 abstract override
当我们给某个方法增加了abstract override后,就是明确的告述编译器,该方法确实是重写了父特制的抽象方法,但是重写后该方法仍是一个抽象方法(因为没有完全实现,需要其它特质继续实现[通过混入排序])
特质的构造顺序(是针对于,那种声明类的时候就混入了特质,静态混入)
第2种特质构造顺序(在构建对象时,动态混入特质)
- 调用当前类的超类构造器
- 当前类构造器
- 第一个特质构造器的父特质构造器
- 第一个特质构造器
- 第二个特质构造器的父特质构造器,如果已经执行过,就不再执行
- 第二个特质构造器
- ……重复5,6的步骤(如果有第3个,第4个特质)
- 当前类构造器
特质的构造顺序(是针对于,那种声明类的时候就混入了特质,动态混入)
区别就是 如果你new对象他会先new对象再混入其它特质
分析两种方式对构造顺序的影响
- 第1种方式实际是构建类对象,在混入特质时,该对象还没有创建。
- 第2种方式实际是构造匿名子类,可以理解成在混入特质时,对象已经创建了。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Ryder!
评论






