基本用法

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!!"