Scala 中抽象類型,指的是在類或 Trait 中使用 type 定義的類型。 類或 trait 本身也可以使用 abstract 來定義,但這種使用 abstract 定義的類和 Trait 在 Scala 中不稱為抽象類型。 你可以把派生于抽象類型的 非抽象類型,比如前面例子 Concrete 中的類型 T,看作給一個類型起一個別名。比如 Concrete 類定義中 String 類型的別名為 T。 因此在 Concrete 中所有出現(xiàn) T 的地方都代表 String,因此前面的 Concrete 其實也可以寫成:
class Concrete extends Abstract {
type T = String
def transform(x:T) = x + x
val initial = "hi"
var current = initial
}
我們將在后面再詳細介紹抽象類型的用法。