一个抽象类可以以抽象的类型为成员。
abstract class AbsCell {
type T;
val init: T;
// 其他成员也可使用T, 比如以T为方法参数或返回值
}
这样一个抽象类型的成员可以在创建时才具体指定:
val cell = AbsCell { type T = int; val init = 1 }
没有看懂
没有看懂
trait
是特殊的抽象类, 要求 constructor 没有 value 参数.
抽象类可以用于 extend
(继承) 或 with
(mixin).
一个类型可能 extend 一个, mixin 多个类型, 而且此过程是递归的. Class Linearation 定义怎样从一个类型的所有 superclass (graph) 求出一个 严格全序 的 superclass 链 (list). 这个链用于 override / super 的 resolution
因为, A extend B
不保证在被用于组合后, A 中的 super 仍然指 B.
可以为一个类另外指定这个类中的 this 的类型.
还没看懂