基本用法

trait 是一組可重用的方法和欄位,可以新增到一個或多個類中。

trait BarkingAbility {
    String bark(){ "I'm barking!!" }
}

它們可以像普通介面一樣使用 implements 關鍵字:

class Dog implements BarkingAbility {}
def d = new Dog()
assert d.bark() = "I'm barking!!"

它們也可用於實現多重繼承(避免鑽石問題)。

狗會劃傷他的頭,所以:

trait ScratchingAbility {
    String scratch() { "I'm scratching my head!!" }
}

class Dog implements BarkingAbility, ScratchingAbility {}
def d = new Dog()
assert d.bark() = "I'm barking!!"
assert d.scratch() = "I'm scratching my head!!"