Scala中抽象类型,指的是在类或Trait中使用type定义的类型。 类或trait 本身也可以使用abstract来定义,但这种使用abstract定义的类和Trait在Scala中不称为抽象类型。
你可以把派生于抽象类型的 非抽象类型,比如前面例子Concrete中的类型T,看作给一个类型起一个别名。比如 Concrete类定义中String类型的别名为T。 因此在Concrete中所有出现T的地方都代表String,因此前面的Concrete其实也可以写成:
class Concrete extends Abstract { type T = String def transform(x:T) = x + x val initial = "hi" var current = initial }
我们将在后面再详细介绍抽象类型的用法。