【发布时间】:2015-01-04 07:58:22
【问题描述】:
根据《Scala 编程》一书: 如果有以下类层次结构:
abstract class IntQueue
Class BasicIntQueue extends IntQueue
trait Doubling extends IntQueue
trait Incrementing extends IntQueue
trait Filtering extends IntQueue
对象
val obj=new BasicIntQueue with Doubling with Incrementing
线性化是
BasicIntQueue->Incrementing->Doubling->IntQueue->AnyRef->Any
但根据书: 当这些类和特征中的任何一个通过 super 调用方法时,调用的实现将是线性化中其右侧的第一个实现。
因此,根据我的理解,所有 mixin 和类中存在的覆盖方法 put() 将按以下顺序调用: 递增->加倍
当BasicIntQueue类的put()方法不在Doubling in linearization的右边时,它是如何被调用的。
这是否意味着对象的类(ex 中的BasicInQueue)的方法总是在调用层次结构方法之后被调用。
【问题讨论】: