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
- }
我们将在后面再详细介绍抽象类型的用法。